正则表达式环顾四周,防止前方和后方


Regex Lookarounds, prevent ahead and behind

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

正则表达式使用正斜杠查找以分数形式写入的英寸测量值,以分隔分子和分母。 EX 1 3/8 英寸或 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

我通过正则表达式 101.com 的调试器运行它,但仍然无法弄清楚。感谢您的阅读。

使用

PCRE/php 你可以使用 (*SKIP)(*FAIL)

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

演示