簡體   English   中英

正則表達式用於特殊字符之間的多個單詞

[英]Regex for multiple words between special characters

我試圖在Java中使用正則表達式在某些特殊字符之間獲取至少每個單詞組成的每組單詞。 這些是一些示例字符串來闡明這一點:

{ ? <> <> ; <> ? ; <> ? . ? <> ? . ? <> ? . ? <> ? }
{ <> <> ? . <> <> ? }
{ <> <> <> }
{ OPTIONAL { <> <> ? } FILTER ( ! bound(?) ) }
{ FILTER not exists ( ! bound(?) ) }
{ <> <> ? . ? <> ? }
{ ? <> <> ; a <> }
{ <> <> ?@en }
{ <> <> <> }
{ <> <> ? . <> <> ? FILTER ( ? > ? ) }
{ <> <> ? . ? <> ? FILTER regex(? ?) }
{ <> <> ? FILTER ( ! bound(?) ) }
{ ? <> ? ; <> ? . ? <> ? }
{ ? <> ? ; <> ? . ?2 <> ? ; <> ? }
{ ? <> <> ; <> ? . ? <> ? }
{ <> <> ? . <> <> ? FILTER ( ? = ? ) }

我的比賽看起來像這樣:

OPTIONAL
FILTER
bound
FILTER not exists
bound
...

到目前為止,這是我想出的正則表達式:

[^\d\W\\a\@]+

您可以在這里進行測試: https//regex101.com/r/cP3Uri/2

我的問題是我的正則表達式只能找到完整的單詞,而找不到單詞組(中間有空格)。 這意味着這個FILTER not exists子字符串FILTER not exists將獲得3個匹配項(每個單詞一個),但我希望它只是一個匹配項。

誰能幫助我找到正確的正則表達式?

您可以使用[a-zA-Z]{2}[a-zA-Z ]*\\\\b查找最少兩個字符的單詞

  • [a-zA-Z]{2} :精確匹配2個大寫或小寫字母
  • [a-zA-Z ]*\\\\b :匹配零個或多個大寫和小寫字符,單詞邊界

要僅查找單詞,然后僅查找帶有空格的單詞,請使用

[a-zA-Z]{2}(?:\\\\s*[a-zA-Z]{2,})*

\w+(?:\s*\w+)*

用於捕獲包括“ a”和2個字符在內的所有組

\w{2}(?:\s*\w+)*

僅用於捕獲具有多個字符的組

您可以將\\ w替換為[a-zA-Z]以排除數字。

參見https://regex101.com/r/cP3Uri/7

您可以使用以下其中一種來尊重您的原始模式:

[^\d\W\\a\@]([^\d\W\\a\@]| )*\b
[^\d\W\\a\@]+( +[^\d\W\\a\@]+)*

參見演示: 12

暫無
暫無

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

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