目標 - 我需要從我的輸入字符串中檢索所有的十六進制數字。正則表達式 - 查找不包含下一個十六進制數字0的十六進制數字匹配
實施例的輸入和比賽 -
1-輸入= 「0x480x8600x89dfh0x89BABCE」(其中 「」 不包括在輸入端)。 應該產生以下匹配:
- 0x48
- 0x860
- 0x89df
- 0x89BABCE
我已經試過這種模式(而不是0x480):
"0[xX][\\da-fA-F]+"
但結果如下ING相符:
- 0x480
- 0x89df
- 0x89BABCE
2-輸入= 「0x0x8600x89dfh0x89BABCE」(其中 「」 不包括在輸入端)。
應該產生以下匹配:
- 0x860
- 0x89df
- 0x89BABCE
就是這樣一個正則表達式的可能嗎?
我知道我可以先使用String.split(「0 [xX]」)分割我的輸入,然後對於每個字符串,我可以編寫邏輯來檢索第一個有效匹配,如果有的話。
但我想知道如果我可以使用模式和匹配器來實現預期的結果。
這是我目前的代碼。
package toBeDeleted;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String pattern = "0[xX][\\da-fA-F]+";
String input = "0x480x860x89dfh0x89BABCE";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println("Starting at : " + m.start()
+ ", Ending at : " + m.end()
+ ", element matched : " + m.group());
}
}
}
是的你是對的。如果我們優先考慮先前的匹配,則情況1和2是互斥原因,第一種情況應產生0x480,如「0 [xX] [\\ da-fA-F] +」。我會用一句話更新這個問題。並感謝您的迴應。 – Chan