正则表达式Lookarounds,防止前后

时间:2015-06-19 15:18:16

标签: php regex pcre

我有一个正则表达式,我无法正常工作。我正在使用PCRE(php)来运行它。

正则表达式使用正斜杠查找以分数表示的英寸测量值,以分隔分子和分母。 ex 1 3 / 8in或19 15/16“

这将匹配12 1/2“:

A product description with 12 1/2" in it.

但我希望它不匹配,如果测量是尺寸的一部分,即在之前或之后有x并且匹配这种格式:19 3/4“x 19 5/8”

错误匹配的示例文字:

Product description with 19 3/4" x 19 5/8" in it.

这匹配5/8“,因为那里的x会被忽略所有。

我的正则表达式目前敲除了x左边的小节,但只忽略右侧的整数。从上面的示例中看,后方将捕获5/8“。我需要它忽略维度的两侧并且仅匹配自身的测量。我使用负向前后匹配x。

正则表达式:

/\s+(?<!x\s)\d*\s?\d+\/\d+"*\s*(in|")(?!\d*\s?x)\s*/i

我通过regex101.com的调试器运行它仍然无法搞清楚。谢谢你的阅读。

1 个答案:

答案 0 :(得分:2)

使用PCRE / php你可以使用(*跳过)(*失败)

\d*\s?\d+\/\d+"*\s*(in|")\sx\s\d*\s?\d+\/\d+"*\s*(in|")(*SKIP)(*FAIL)|\d*\s?\d+\/\d+"*\s*(in|")

Demo