簡體   English   中英

為什么這些字符串與我的正則表達式匹配?

[英]Why are these strings matching my regular expression?

我對正則表達式還是新手,我正在嘗試編寫一個匹配家庭關系的正確組合的表達式,例如曾曾祖母(縮寫為 GGgm)great = G step = S父親、母親、兒子等 = f, m, s, d, gm, gf

法律:應匹配: m, gf, Ggm, GGgf, Ss, SGgs

非法:不應匹配: mf, Gm, SSm, GSm

我目前的模式是:

^((m|f|d|s|gf|gm|gs|gd))|^(\S(m|f|d|s|gf|gm|gs|gd))|^(\S(G)*(gm|gs|gd|gf))|^((G)*(gf|gm|gs|gd))$

但是,這匹配了諸如mfGm之類的錯誤組合。 我怎樣才能解決這個問題?

在您的正則表達式中, \S(m|f|d|s|gf|gm|gs|gd)匹配任何非空白字符(帶有\S ),然后匹配mfd等。您可能想要匹配S\S ,但這不是\S所做的。

您可以使用

^S?(g?|G*g)[mfds]$

請參閱正則表達式演示 詳情

  • ^ - 字符串的開頭
  • S? - 一個可選的S
  • (g?|G*g) - 一個可選的g或者零個或多個G然后是一個g字符
  • [mfds] - m , f , ds
  • $ - 字符串結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM