正则表达式匹配零和逗号
Posted
技术标签:
【中文标题】正则表达式匹配零和逗号【英文标题】:Regex to match Zero and Comma 【发布时间】:2018-01-22 15:16:22 【问题描述】:我正在寻找将捕获以下文本的正则表达式字符串:
0, ,0,
我尝试了一些变体,但无济于事:
^[0,]+$
^[0,]
任何建议将不胜感激。
编辑: 这将在另一个使用 Perl 进行正则表达式模式匹配的程序中使用。该程序读取一个包含条目列表的文件。在程序中使用不同的配置文件,我需要选择如下所示的条目:
0, ,0,
这些条目也可以这样写:
1, ,0,
因此,我正在寻找的理想正则表达式将扫描“它是否以 1 或 0 开头,紧接着是逗号,然后是空格,然后是逗号,然后是数字 (0-9),并以逗号结尾。”
更多示例:
0, ,8,
1, ,5,
我希望这有助于澄清请求。
谢谢,
【问题讨论】:
如果该示例具有代表性,则您的问题是要求匹配单独一行。首先尝试删除^
和$
,然后如果结果仍然不符合您的喜好,则可以改进您的问题。
您应该提供 几个 输入及其预期输出。
您打算使用哪种风格的正则表达式?
你的意思是捕获,还是仅仅匹配?
正如您从几个答案中看到的那样,您的示例中的空格是否是示例的一部分存在混淆。我假设您的标题是描述性的,并且 soaces 不是示例的一部分;但是你真的需要edit你的问题来明确和明确。
【参考方案1】:
(?:[0\s]+,)+
你的字符串中有一个空格,所以你需要 \s 来匹配它。
【讨论】:
【参考方案2】:您的问题没有提到特定的正则表达式实现,因此您收到的答案可能不适合您。 (课程:始终指定您计划使用它的环境。)
在任何合理的现代正则表达式变体中,
[0,]+
匹配一个或多个字符的序列。字符类[abc]
匹配单个字符,该字符是方括号内的枚举字符之一,量词+
表示尽可能多次匹配前面的表达式,但至少匹配一次。
匹配和捕获在某些实现中是独立的概念。也许你想在这个正则表达式周围添加括号来指定你想要捕获,而不仅仅是匹配,这个正则表达式描述的输入中的字符串(在某些实现中,你想添加一个标志 - 通常是 g
- 到说你想要所有匹配,而不仅仅是第一个)。
【讨论】:
【参考方案3】:正则表达式:^(?:[0 ],)+$
或 ^(?:[0\s],)+$
详情:
^
断言字符串开头的位置
(?:)
非捕获组
[]
匹配列表中存在的单个字符
+
匹配一次到无限次
$
在字符串末尾断言位置
\s
匹配任何空白字符
Regex demo
【讨论】:
【参考方案4】:您还需要使用\s
来捕获空格:
^[0,\s]+$
\s
将匹配所有空格字符,相当于[\r\n\t\f\v ]
。
在此处查看结果:https://regex101.com/r/g3faWA/1
如果要匹配包含 0 和逗号的部分,即使该行包含其他字符,也可以删除行分隔符(^
和 $
)。那将给出:
[0,\s]+
【讨论】:
以上是关于正则表达式匹配零和逗号的主要内容,如果未能解决你的问题,请参考以下文章