2016-06-14 50 views
1

使用正則表達式正則表達式:連續匹配失敗

[^a-zA-Z]([A-Z][&+-\/\\][A-Z](([&+-\/\\][A-Z])+[^a-zA-Z\d:])) 

,並希望以匹配符號描繪字母,表達達到成功的比賽,但未能正確地匹配緊跟正確的匹配模式。請注意,它在執行時不區分大小寫。

例如,在該示例

比薩餅ABC C/A/R/L左右R/O/F/L小號

ABC和R/O/F/L是正確匹配,但C/A/R/L僅部分匹配(A/R/L)。這怎麼解決?

下面是一個regex101模型:但令人困惑的是,它似乎沒有表現出與我在其他方面看到的相同的行爲。

https://www.regex101.com/r/zV8wI0/1

+1

嘗試['\ b [a-zA-Z](?:[./] [A-Za-z])* \ b'](https://www.regex101.com/r/aQ0sU0/ 1)。 –

+0

@WiktorStribiżew這是正確的答案(需要爲我的目的進行一點編輯,但回答了問題) – Stumbler

回答

1

您可以使用

\b[a-zA-Z](?:[./][A-Za-z])*\b 

regex demo

如果您不需要全字匹配,刪除\b(字邊界)。

說明

  • \b - 領先的單詞邊界
  • [a-zA-Z] - 1信
  • (?:[./][A-Za-z])* - 零個或多個序列(注意:如果你需要至少一個./, (replace * with a +)作者:
    • [./] - 點或/符號
    • [A-Za-z] - 1信
  • \b - 尾字邊界

如果你需要匹配c.a/r.lc.ar.l,你需要使用的東西像

\b[a-zA-Z](?:(?:\.[A-Za-z])+|(?:/[A-Za-z])+)\b 

another regex demo