需要正则表达式来匹配单词或字符串结尾

时间:2013-08-08 23:50:28

标签: regex

我正在尝试获取两者中任何一个的字符串内容。

TITLE1: *STUFF_TO_GET*   TITLE2:...
TITLE1: *STUFF_TO_GET*

我的正则表达式目前看起来像这样

"TITLE1:\s*?(.+?)TITLE2|$"

原因是:* STUFF_TO_GET *可以与冒号齐平,这就是我包含

的原因
"\s*?" 

然后正则表达式应该抓住所有内容,直到它看到TITLE2或字符串的结尾。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

轮换(|)适用于他们所在的整个群组或整个群组,如果他们不在任何群组中。您尚未将更改与任何内容分组,因此您的版本将匹配TITLE1:\s*?(.+?)TITLE2 字符串的结尾,而不是其他内容。

你需要像这样对交替进行分组:

TITLE1:\s*?(.+?)(?:TITLE2|$)

将这两个懒惰的量词放在一起有点奇怪。如果您想在*STUFF_TO_GET*之前允许空格,\s*(无?)稍微清楚一点:

TITLE1:\s*(.+?)(?:TITLE2|$)