正则表达式点(。)问题

时间:2011-03-18 15:35:19

标签: regex

如果你有一个字符串:

"hello my name is joe bloggs! I like stuff"

你如何匹配"hello my name is joe bloggs"?我开始时:

(.+)(!)(.+)

并且在!点,我希望它停止。

请问您能否使用.功能回答?

由于

3 个答案:

答案 0 :(得分:3)

您需要一个问号:

(.+?)(!)(.+)

答案 1 :(得分:3)

([^!]*)(!)(.*)

.可能会有一些差异,通常“不”捕获“新行,而[^!]会,但除非你的文字中有新行,否则你会赢”看到有什么不同。

答案 2 :(得分:0)

.没有问题;您只有三个捕获组:第一个(.+)(!)和第二个(.+)。如果您只想匹配以!结尾的行,请考虑

(.+)!

但是如果你想清楚地识别该行的每个部分,

^(.+)!.+$

同样,问题不在于.,但如果你想要一次捕获,你应该只有一个被括号括起来的组。