如何匹配文本限制它与非条件

时间:2011-02-28 11:09:33

标签: php regex

我在理解正则表达式时有一个问题

例如我有以下文字:

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].*?),'

1 个答案:

答案 0 :(得分:2)

尝试:

'(\W[A-Z].*?),'

还测试了@www.spaweditor.com

- 编辑

使用'\W([A-Z].*?),\W[a-z]'preg_match,您将获得第一个结果。