我试图解析使用帝国速记符号的长度数量(英尺为'
,英寸为"
),而我有点窘迫。使用这个正则表达式:
/\d+(\.\d+)?(?:[ -]\d+\/\d+)?(?:\')/g
我可以匹配以下字符串(每个字符串在一个更大的字符串中单独传递):
5'6"
(匹配5'
)6'
3 1/2'
12.5'
但是,我在使用''
代替"
的字符串中遇到了问题。我尝试在最后添加[^\']
,但这与第一个示例中的5'6
匹配,如果我放[^\'\d]
,则根本不匹配第一个示例。有什么帮助吗?
答案 0 :(得分:2)
为了匹配5'
中的5'6''
,您只需要使用否定前瞻:
/\d+(?:\.\d+)?(?:[ -]\d+\/\d+)?'(?!')/g
^^^^^
请参阅regex demo
(?!')
如果最后的'
跟随另一个单撇号,则整个匹配将失败。