如果后面没有模式则匹配正则表达式
regex match if not followed by pattern
我需要匹配如下字符串:
RHS numberXnumberXnumber
包含在像这样的字符串中:(所有数字都可以有或没有小数部分)
foo RHS 100x100x10 foo
foo RHS 100.0x100x10 foo
foo RHS 100.0x100.0x10.0 foo
foo RHS 100x100.0x100x10 foo
foo RHS 10.0x100.0x10.0x10.0 foo
我写了这个:
RHS \d+.?\d?x\d+.?\d?x\d+.?\d
但是这个正则表达式也匹配以下字符串的第一组数字:
foo RHS 100x100x100x10 foo
我怎样才能避免这种情况?
如果有四组 number
基本上我不想要任何匹配
提供的示例不正确。大多数匹配第 4 行,所有匹配第 5 行。他们说得对,您需要字边界和否定前瞻,但他们缺少一个关键部分。
正则表达式匹配点前后的单词边界。这意味着如果第三个数字有小数,搜索将不会 运行 行尾,不会看到最后的 x,但 会 匹配字符串。
作为一种解决方案,您需要使用这种负前瞻性检查小数点后的 x:(?!\.?\d?x)
以及将搜索包装在单词边界内:\b...\b
我测试了下面的字符串,它有效。
\bRHS \d+\.?\d?x\d+\.?\d?x\d+\.?\d?(?!\.?\d?x)\b
改用这个正则表达式:
RHS \d+.?\d?x\d+.?\d?x\d+.?\d?(?!x)
或者它的精简版:
RHS (\d+.?\d?){3}(?!x)
我需要匹配如下字符串:
RHS numberXnumberXnumber
包含在像这样的字符串中:(所有数字都可以有或没有小数部分)
foo RHS 100x100x10 foo
foo RHS 100.0x100x10 foo
foo RHS 100.0x100.0x10.0 foo
foo RHS 100x100.0x100x10 foo
foo RHS 10.0x100.0x10.0x10.0 foo
我写了这个:
RHS \d+.?\d?x\d+.?\d?x\d+.?\d
但是这个正则表达式也匹配以下字符串的第一组数字: foo RHS 100x100x100x10 foo
我怎样才能避免这种情况? 如果有四组 number
基本上我不想要任何匹配提供的示例不正确。大多数匹配第 4 行,所有匹配第 5 行。他们说得对,您需要字边界和否定前瞻,但他们缺少一个关键部分。
正则表达式匹配点前后的单词边界。这意味着如果第三个数字有小数,搜索将不会 运行 行尾,不会看到最后的 x,但 会 匹配字符串。
作为一种解决方案,您需要使用这种负前瞻性检查小数点后的 x:(?!\.?\d?x)
以及将搜索包装在单词边界内:\b...\b
我测试了下面的字符串,它有效。
\bRHS \d+\.?\d?x\d+\.?\d?x\d+\.?\d?(?!\.?\d?x)\b
改用这个正则表达式:
RHS \d+.?\d?x\d+.?\d?x\d+.?\d?(?!x)
或者它的精简版:
RHS (\d+.?\d?){3}(?!x)