我想要正則表達式匹配字符串有一個前綴和兩個可選的後綴,可以以任何順序,其中前綴和每個後綴單獨分組,例如,匹配的前綴和多個可選的後綴沒有分隔符
input => groups
!attackH5E4 => (attack, H5, E4)
!attackE4H5 => (attack, H5, E4)
!HHHHHHH5 => (HHHHHH, H5, null)
!HHHHHHH5E4 => (HHHHHH, H5, E4)
!HHHHHHH5E4 => (HHHHHH, H5, E4)
!HHHHHHH5E4 => (HHHHHH, H5, E4)
我目前使用的正則表達式模式是
!([^\s]+)(?:(H\d+)|(E\d+)){0,2}
其中組1是前綴(例如attack
),組2是H-改性劑(例如H5
),並且組3是E修飾符(例如E4
)。
現在,組2和組3被組1吞併。將?
投擲到[^\s]+
使其僅匹配第一個字符。投入$
後綴非捕獲組根本不工作,除非我脫掉{0,2}
。
Here's a RegExr fiddle for the pattern, with test inputs and expected groups.
那麼問題是什麼? – kirkpatt
參見['^!(\ S +?)(?:(H \ d +)|(E \ d +)){0,2} $'](https://regex101.com/r/F8L4kh/3)。我認爲你需要將這些字符串解析爲獨立的字符串,對吧? –
@kirkpatt「我正在嘗試使用正則表達式匹配字符串,該字符串具有前綴和兩個可選後綴,可以按任意順序排列,前綴和每個後綴分別分組。編輯澄清。對不起,我認爲這很明顯。 – user2706191