繁体   English   中英

RegEx组中的多个可选字符

[英]RegEx multiple optional characters in group

如何在组中定义可选字符?

我想尝试匹配以下内容......

kg
kilo
kilos
kilogram
kilograms
g
gram
grams

我知道我可以将它们单独放在一个组中,但我想知道我是否可以做这样的奇特......

(kg|kilo?g?ram?s?)

问题是它只能匹配s? 或者没有第二次交替,所以它将匹配零长度。

我首先列举所有可能的匹配条件,然后从那里开始削减,看看是否有更有效的解决方案:

kg|kilo|kilos|kilogram|kilograms|g|gram|grams

复数''是一个明显的冗余:

kg|kilos?|kilograms?|g|grams?

g和kg可以折叠:

k?g|kilos?|kilograms?|grams?

我们可以将单位折成千克:

k?g|kilo(?:s|grams?)?|grams?

对于“克”的六个字符重复,你还好吗? :)

您可以使用(?:)对项目进行分组而不进行捕获(这适用于大多数RegEx风格;如果您不确定,请在引擎的文档中查找“非捕获组”)。

有了它,你可以尝试这样的事情:

(k?g|(?:kilo)?grams?|kilos?)

这完全匹配

g kg gram grams kilogram kilograms kilo kilos

没有别的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM