簡體   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