我正在尝试用perl编写模式的正则表达式:
""Wagner JS,Adson MA,Van Heerden JA et al (1984)结直肠癌肝转移的自然历史。与切除治疗的比较。199:502-508“”\s
为了得到最后一部分:“AnnSurg199:502-508”所以我写道
$string =~ m/\.([^\d]*\s\d*\:\d*\–\d*)\"\"\s$/我在1美元中得到的比赛部分是:“与切除治疗的比较。Ann Surg 199:502-508”,但我期待的是:"Ann Surg 199:502-508“。
在某些情况下,它是有效的,但在某些情况下,它不起作用。我试过搜索,但没有得到满意的答案。请给我一些建议。
发布于 2014-04-02 21:47:29
您只需要在character类中添加一个点:
$string =~ m/\.([^\d.]*\s\d*:\d*–\d*)""\\s$/但更好的方法是用点作为分隔符拆分字符串,然后取最后一部分。
发布于 2014-04-02 21:55:17
如果您想要每个字符串的最后一部分,那么您所需要的就是
$string =~ /([^.]+)$/或者,避免句号后的空格
$string =~ /([^.\s][^.]+)$/发布于 2014-04-02 21:47:27
请尝试一下:
$string =~ m/\.\s*([^\.\d]*\s*\d*\:\d*\–\d*)""\\s$/;https://stackoverflow.com/questions/22813334
复制相似问题