消除字符串中带有特殊字符的单词

我正在尝试选择结构数字为{3-5},空格为{1-4}的字符串(零件编号)

e.g. 1234 20 or 1234 20.00

问题是我的RegEx正在捕获字符串格式,例如1234 12.54或1234 12。 我不能选择1234 12,因为它是1234 12.54的子字符串。如果主字符串是1234 12.00,我会选择它。

这是我尝试过的RegEx

(\d\d\d\d?\d?)(\s+|\t)(\d{1,4})

(\d\d\d\d?\d?)(\s+|\t)(\d{1,4}(?!.[1-9])

(\d\d\d\d?\d?)(\s+|\t)(\d{1,4}(?=\.00)?

预期结果是选择1234 20或1234 20.00

不要选择任何字符串,例如1234 12.54甚至1234 12(子字符串1234 12.54)

qq9931 回答:消除字符串中带有特殊字符的单词

您可以匹配3-5位数字,并使用alternation匹配1-2位数字,后跟一个点,再匹配1-2倍零,或匹配1-4位数字。

最后,使用否定前瞻断言右边的字符不是非空格字符。

请注意\s也与\t和换行符匹配。

\b\d{3,5}\s+(?:\d{1,2}\.0{1,2}|\d{1,4})(?!\S)

部分

  • \b字边界
  • \d{3,5}\s+匹配3、4或5位数字,后跟1+个空格字符
  • (?:非捕获组
    • \d{1,2}匹配1或2个数字,一个点和1或2乘以零的数字
    • |
    • \d{1,4}匹配1、2、3或4位数字
  • )关闭非捕获组
  • (?!\S)负向前进,断言直接在右边的不是非空白车

Regex demo

本文链接:https://www.f2er.com/3169633.html

大家都在问