我正在尝试编写与句子匹配的正则表达式。以下是我想要匹配的三个句子
1) Volume High. My Example
2) Volume Low. My Example
3) Volume. My Example
我现在不知道如何在下面的正则表达式中表示缺少的单词
^Volume\s(High|Low|)\.\sMy Example$
上面的正则表达式只匹配句子1和2,但不匹配3.我怎样才能使它工作?
谢谢
答案 0 :(得分:2)
答案 1 :(得分:1)
要使正则表达式中的标记可选(发生0或1次),请在其后面添加?
。
高关键字和低关键字已经分组为一个标记,因此(High|Low)
会使它们成为可选项,但仍然需要之前的空格。
因此,即使下一个单词与...匹配,您也必须选择使空格可选。
^Volume\s?(High|Low)?\.\sMy Example$
...或创建一个包含空格的额外组,以便整个组可以是可选的......
^Volume(\s(High|Low|))?\.\sMy Example$
如果你正在捕捉High | Low组的值,那么添加一个额外的组可能很烦人;许多正则表达式实现允许您通过在开头添加?:
来创建“非捕获组”,如下所示:
^Volume(?:\s(High|Low|))?\.\sMy Example$
答案 2 :(得分:1)
建议
^Volume\s(High|Low|)\.\sMy Example$
不起作用
Volume. My Example
因为在句号之前没有空格,并且表达式要求它。将空间移动到表达式中可以使它工作:
^Volume(\sHigh|\sLow|)\.\sMy Example$
答案 3 :(得分:1)
谢谢你们。我明白你的意思了 我最终使用了以下
^Volume\s*(High|Low|)\.\sMy Example$
我喜欢它,因为它更简单。 谢谢大家的帮助。