簡體   English   中英

正則表達式模式匹配java

[英]Regular expression Pattern matching java

我需要有一個字符串的正則表達式: Created ID @DBDOYEF has problems

單詞@DBDOYEF可能包含az,AZ,0-9和所有特殊字符,如

~!#$%^&*()_+{}:"<>?,./\.

請幫我為這個詞創建一個模式。 我用了

Created ID \\b[A-Z][0-9][\\//+-@#$%^~&*!():]+\\b has problems

為此,但它在許多情況下都失敗了。

你的問題是

  • \\b僅匹配“單詞字符”(字母/數字/下划線)和非單詞字符(或字符串的開頭/結尾)。 因此,您需要一種不同的方法來確定您的比賽已經結束。 由於您的標識符前后已經有空格,因此您已經有了這樣的方法並且可以刪除\\b s。
  • -是字符類中的元字符,需要放置在字符類的開頭或結尾,因此它不會被解釋為范圍標記(如在AZ )。
  • 您的標識符以@開頭,但這不是[AZ]一部分,因此無法匹配。 您可能希望(可選)以@開始匹配。
  • 顯然,標識符不需要位置 2 的數字,並且允許位置 1 之后的字母,因此您應該將三個字符類合並為兩個(假設第一個字母需要是字母或數字)。

那給你

Created ID @?[A-Z0-9][-A-Z0-9\\/+@#$%^~&*!():]+ has problems

如果像-(X@Q)這樣的 ID 也是有效的,您可以將其簡化為

Created ID [-A-Z0-9\\/+@#$%^~&*!():]+ has problems

它可能以也可能不以@ 開頭。 有時它以 : 或 AZ 或 az 或 0-9 開頭

您正在嘗試[AZ][0-9][\\\\//+-@#$%^~&*!():]+ ,它需要1 個字母,后跟1 個數字,后跟任何標點符號。 相反,對所有允許的字符使用相同的字符類

正則表達式

Created ID [@A-Za-z0-9~!#$%^&*()_+\-{}:\"<>?,./]+

regex101 演示

暫無
暫無

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

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