2

我正在尝试获取可能看起来像两者中的任何一个的字符串的内容。

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

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

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

原因是: *STUFF_TO_GET* 可以与冒号齐平,这就是为什么我包括

"\s*?" 

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

4

1 回答 1

2

交替 ( |) 适用于它们所在的整个组或整个模式(如果它们不在任何组中)。您没有将您的交替与任何东西分组,因此您的版本将匹配TITLE1:\s*?(.+?)TITLE2 匹配字符串的结尾,而不是其他任何内容。

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

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

将这两个惰性量词放在一起有点奇怪。如果您想在 之前允许空白*STUFF_TO_GET*\s*(no ?) 会更清楚一点:

TITLE1:\s*(.+?)(?:TITLE2|$)
于 2013-08-08T23:51:55.237 回答