我有一个文本文件,它只包含用分隔符分隔的数字。分隔符可以是逗号、空格、换行符等,而不是数字。
1, 2, 3, 4
1 2 3 4
1|2|3|4
1hello2hello3hello4
我正在寻找一个正则表达式来匹配整个文本文件中的这种重复模式。预期结果将是"找到匹配项"或"找不到匹配项"。
澄清一下,如果文本以数字和空格作为分隔符开头,则应使用此模式重复整个文本。因此,如果在文本中的某个地方有这样的内容:
12 34 56,78
匹配项应中断并返回未找到的匹配项。
您可以使用以下正则表达式获取用作连续数字字符串之间的分隔符的固定字符串,或者得出至少两个分隔符不相等的结论。如果存在匹配项,分隔符字符串将是捕获组 1 的内容。如果存在多个不同的分隔符,则尝试的匹配将失败。
^d+(D+)d+(?:1d+)*$
然后,可以在捕获组 1 的内容上拆分字符串,以提取连续数字组。
启动引擎!阿拉伯数字
例如,如果字符串为:
1¯_(ツ)_/¯2¯_(ツ)_/¯3¯_(ツ)_/¯4
比赛将成功,捕获组 1 将包含'¯_(ツ)_/¯'
。
另一方面,如果字符串是:
1¯_(ツ)_/¯2¯_(:-)_/¯3¯_(ツ)_/¯4
匹配将失败,因为并非所有分隔符都相同。
正则表达式引擎执行以下操作。
^ : match beginning of string
d+ : match 1+ digits
(D+) : match 1+ non-digits in capture group 1
d+ : match 1+ digits
(?:1d+) : match the content of capture group 1 followed by 1+ digits
in a non-capture group
* : execute the non-capture group 0+ times
$ : match end of string
1. 我使用 PCRE (PHP( 正则表达式引擎进行了测试,但C++正则表达式引擎会给出相同的结果。
然后我重复我的评论,你可以使用这个表达式,分隔符可以是除数字以外的任何东西"^[0-9]+([^0-9][0-9]+)*$"
这是在监视除数字以外的任何内容:
[^d]+
你可以在这里测试