积极向前看后的正则表达式匹配模式

时间:2014-11-14 16:58:56

标签: regex lookahead

我有一个正面的正则表达式。正向前瞻依赖于字符串中存在的“cfu / ml”,但结果中不包括它。

这是正则表达式:

((((less|greater)\s*tha[nt]\s*)?[><]*[\d]+[\sx,.-]*)*)+(?=CFU\s?/\s?ML)

Ex string:“100,000,000 x 85 x 9345 cfu / ml”

匹配1:“100,000,000 x 85 x 9345”

这工作得很好,但在那个积极的前瞻之后尝试匹配任何东西都没有用。我正在尝试做的是在积极向前看后添加另一个结果捕获组。

((((less|greater)\s*tha[nt]\s*)?[><]*[\d]+[\sx,.-]*)*)+(?=CFU\s?/\s?ML)\s*blah

Ex string:“100,000,000 x 85 x 9345 cfu / ml blah”

匹配1:“100,000,000 x 85 x 9345”

Match2:“blah”

在积极向前看之后似乎什么都没有,任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

前瞻零宽度 - 它们不匹配任何字符,它们只是断言字符串中的某些条件为真。因此,如果前瞻匹配,那么后面的字符将是CFU / ML或您的前瞻匹配的任何其他字符。

你想忽略这些字符 - 这意味着不仅仅断言它们存在,而是实际消费它们以便它们不会成为匹配组的一部分。例如,您可能会将前瞻变为非捕获组。完全匹配的字符串仍会包含其他字符,但捕获组不会包含它们。