我有正则表达式,搜索行包含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排除这些行。
2条答案
按热度按时间ego6inou1#
如果我没理解错的话,您不希望匹配注解掉的数字,因为它们前面有
//
:Regex demo.
^
-匹配字符串的开头(?!\s*\/\/)
-如果在开头找到//
,则不继续匹配.*?\b(\d{4})\b
-匹配4位数字(带字边界)egmofgnx2#
您可能希望在此处使用单词边界:
上述模式将只匹配作为独立单词出现的
19xx
年。Demo(第一个字母)