[英]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.