簡體   English   中英

正則表達式模式匹配在java中不起作用

[英]Regex pattern matching doesn't work specifc string in java

我在 java 中使用了 REGEX 模式(如下所示):工作模式

對於字符串:工作字符串 它工作正常。 但是當我嘗試使用以下模式時:非工作模式

對於字符串:str =

非工作字符串 抱歉上傳圖片。 看起來 a00[] 中的字符 '[]' 在瀏覽器上的編碼方式不同。 有什么方法可以以不同的方式閱讀該角色? 同一個字符在記事本++中有不同的表示。 我正在使用 RXTX 和 inputStream.read(readBuffer) 來讀取數據。 有什么方法可以更新我在java中的編碼方法來克服這個問題? http://i.imgur.com/sdUjS.jpg i.imgur.com

PS:對圖像描述感到抱歉 - 如果它輸入它我不能代表那個角色。 當我復制粘貼那個字符時,它變成了一個空白區域。

奇怪的符號 (└) 看起來像 ASCII 3 在某些字體中的表示方式。

在正則表達式中, \\b匹配單詞邊界。 即,介於字母數字字符和非字母數字字符之間。 它適用於第一種情況,因為在匹配的子字符串之前有一個數字(“9”),在它(非字母數字字符)之后有一個感嘆號(“!”)。

在第二種情況下,您將感嘆號更改為字母,因此不再存在從字母數字到非字母數字的轉換。

解決方案是擴展正則表達式,使其也匹配符號和數字:

Pattern.compile("(\\x03\\d)(a)\\w*(?=\\x03\\d)");

我使用\\\\x03\\\\d來匹配代碼。 最后一部分(?= )是前瞻。 它檢查它是否匹配,但不消耗它。 就是這樣,因此您可以連續進行多個匹配。


一個更簡單的替代方法是在“└”上拆分字符串,然后檢查各個部分。

s.split("\u0003")

暫無
暫無

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

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