regex 一般表示式:如何排除不需要的匹配项

mwkjh3gx  于 2022-11-26  发布在  其他
关注(0)|答案(2)|浏览(116)

我有正则表达式,搜索行包含4位数字,具体19xx。它给出了太多的匹配,所以我正在寻找一种方法来排除我不想要的东西。
这是我目前的正则表达式:

^\s*[^\/].*19\d{2}

以下是一些示例行:

short param1 = 1994;
       short param2 = 1918;
// 1998-08-20     
       // 1998-08-20    
      //## begin protected section initialization list [51935568]
//## begin protected section initialization list [51935568]
  • (第2、4和5行开头有空格。)*

我的正则表达式管理正确:

  • 查找行1,2
  • 不包括第3、6行

但也不正确地匹配第4行和第5行。我找不到一种方法来使te regex排除这些行。

ego6inou

ego6inou1#

如果我没理解错的话,您不希望匹配注解掉的数字,因为它们前面有//

^(?!\s*\/\/).*?\b(\d{4})\b

Regex demo.

  • ^-匹配字符串的开头
  • (?!\s*\/\/)-如果在开头找到//,则不继续匹配
  • .*?\b(\d{4})\b-匹配4位数字(带字边界)
egmofgnx

egmofgnx2#

您可能希望在此处使用单词边界:

\b19[0-9]{2}\b

上述模式将只匹配作为独立单词出现的19xx年。

Demo(第一个字母)

相关问题