获得一致的模式

时间:2013-12-01 12:10:41

标签: regex

我正在使用.{0,70}(?:\\S(?:-| |$)|$)来匹配a/n b/n c/n之类的字符串,但只匹配最后一个字符串,即c

例如:

hello(newline)world(NL)java(NL)

只匹配java但是当我将正则表达式修改为.{0,70}(?:\\S(?:|-| |$)|$)时,它的效果非常好。任何人都可以解释这个

1 个答案:

答案 0 :(得分:2)

你的第二个正则表达式“有效”,因为你为替换添加了一个空的替代方法,即它从(a|b)转到(a|b|),它将匹配ab或“无”(零宽度,它不必是空格字符或任何东西,它将在字符之间匹配)。

它不起作用,但.匹配除换行符之外的所有内容,并且所有行都以非空白字符结尾,因此.{0,70}\S +“nothing”将始终匹配。

我的要求太不明确了,我没有给你一个明确的答案(我不确定空格和-在交替中的位置。但是,如果你真的只是试图匹配线上出现的任何内容,我认为没有理由不能只使用.*\S(这会给你类似的匹配你的“工作”正则表达式)。但如果.*\S满足您的需求,您可能应该只是通过换行符分割字符串并正确修剪它。