首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl正则表达式从最后一个开始匹配,跳过最后一个分隔符

perl正则表达式从最后一个开始匹配,跳过最后一个分隔符
EN

Stack Overflow用户
提问于 2014-04-02 21:40:45
回答 4查看 45关注 0票数 0

我正在尝试用perl编写模式的正则表达式:

""Wagner JS,Adson MA,Van Heerden JA et al (1984)结直肠癌肝转移的自然历史。与切除治疗的比较。199:502-508“”\s

为了得到最后一部分:“AnnSurg199:502-508”所以我写道

代码语言:javascript
复制
$string =~ m/\.([^\d]*\s\d*\:\d*\–\d*)\"\"\s$/

我在1美元中得到的比赛部分是:“与切除治疗的比较。Ann Surg 199:502-508”,但我期待的是:"Ann Surg 199:502-508“。

在某些情况下,它是有效的,但在某些情况下,它不起作用。我试过搜索,但没有得到满意的答案。请给我一些建议。

EN

回答 4

Stack Overflow用户

发布于 2014-04-02 21:47:29

您只需要在character类中添加一个点:

代码语言:javascript
复制
$string =~ m/\.([^\d.]*\s\d*:\d*–\d*)""\\s$/

但更好的方法是用点作为分隔符拆分字符串,然后取最后一部分。

票数 1
EN

Stack Overflow用户

发布于 2014-04-02 21:55:17

如果您想要每个字符串的最后一部分,那么您所需要的就是

代码语言:javascript
复制
$string =~ /([^.]+)$/

或者,避免句号后的空格

代码语言:javascript
复制
$string =~ /([^.\s][^.]+)$/
票数 1
EN

Stack Overflow用户

发布于 2014-04-02 21:47:27

请尝试一下:

代码语言:javascript
复制
$string =~ m/\.\s*([^\.\d]*\s*\d*\:\d*\–\d*)""\\s$/;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22813334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档