我正在寻找一个可以捕获以下文本的正则表达式字符串:
0, ,0,
我尝试过一些变化,但无济于事:
^[0,]+$
^[0,]
非常感谢任何建议。
编辑: 这将在另一个使用Perl进行正则表达式模式匹配的程序中使用。该程序读取一个文件,其中包含条目列表。在程序中使用不同的配置文件,我需要选择如下所示的条目:
0, ,0,
这些条目也可以这样读:
1, ,0,
所以我正在寻找的理想正则表达式会扫描"它是以1还是0开头,然后是逗号,然后是空格,然后是逗号,然后是数字(0-9),最后是一个逗号。"
进一步的例子:
0, ,8,
1, ,5,
我希望这有助于澄清请求。
谢谢,
答案 0 :(得分:2)
(?:[0\s]+,)+
你的字符串中有一个空格,所以你需要匹配它。
答案 1 :(得分:1)
您的问题并未提及特定的正则表达式实施,因此您收到的答案可能对您不起作用。 (课程:始终指定您计划使用此环境的环境。)
在任何合理的现代正则表达式中,
[0,]+
匹配一个或多个字符的序列。字符类[abc]
匹配单个字符,它是方括号内的枚举字符之一,而量词+
表示尽可能多次匹配前一个表达式,但至少一次。< / p>
在某些实现中,匹配和捕获是单独的概念。也许你想在这个正则表达式周围添加括号来指定你想要捕获(而不仅仅是匹配)这个正则表达式描述的输入中的字符串(在某些实现中,你想要添加一个标志 - 通常g
- 说你想要所有比赛,而不仅仅是第一场比赛。
答案 2 :(得分:0)
您还需要捕获空格,例如\s
:
^[0,\s]+$
\s
将匹配所有空格字符,相当于[\r\n\t\f\v ]
。
在此处查看结果:https://regex101.com/r/g3faWA/1
如果要匹配包含0和逗号的行的部分,即使该行包含其他字符,您也可以删除行分隔符(^
和$
)。这会给:
[0,\s]+
答案 3 :(得分:0)
正则表达式:^(?:[0 ],)+$
或^(?:[0\s],)+$
<强>详情:
^
在字符串(?:)
非捕获组[]
匹配列表中的单个字符+
匹配一次且无限次$
在字符串\s
匹配任何空格字符