我在理解正则表达式时有一个问题
例如我有以下文字:
To ask Jack the Daniels, John the Ripper, whether, they will go out.
我希望匹配此部分 - Jack the Daniels, John the Ripper
,它以逗号和小写字母结尾(,[a-z])*
当我将它与此正则表达式匹配时:
'To ask (?P<addressee>[A-Za-z,\s]*), [a-z]'
我得到以下结果:
Jack the Daniels, John the Ripper, whether
所以问题是我可以在括号内使用不条件吗?这样的事情,但它不适合我:
'To ask (?P<addressee>[A-Za-z,\s]*(^, [a-z]*)), [a-z]'
---- EDIT
似乎我会将它与这样的东西相匹配: '(\ W [A-Z]。*?),' 并使用preg_match_all我会得到我想要的,但文字也可以像下面一样:
To ask Jack the Daniels, John the Ripper, whether, they will go out with Joe the Man, or me.
我也会匹配Joe the Man
,我不想这样做。我需要在条件之前使用才能检查匹配前是否有(,[a-z])?
以下不起作用,如何纠正?
'(?<!(, [a-z]))(\W[A-Z].*?),'
答案 0 :(得分:2)
尝试:
'(\W[A-Z].*?),'
还测试了@www.spaweditor.com
- 编辑
使用'\W([A-Z].*?),\W[a-z]'
和preg_match
,您将获得第一个结果。