我有一些Python正則表達式,我需要轉換爲java。我知道我想要正則表達式做什麼,但我不知道如何轉換它。如何將python正則表達式轉換爲java正則表達式?
以下是python中的表達式:^172\.(1[6789]|2\d|30|31)\.
。我希望它捕獲任何有點像172.X
IP地址,其中X的範圍從16到31
這個作品在蟒:
import re
pattern='^172\\.(1[6789]|2\\d|30|31)\\.'
test_strings = ['172.19.0.0', '172.24.0.0', '172.45.0.0', '172.19.98.94']
for string in test_strings:
print re.findall(pattern, string)
,並適當地抓住我的期望:
['19']
['24']
[]
['19']
但我試圖將這些轉換爲java,它不工作。看來我應該能夠轉換爲java正則表達式,只需將\
添加到每個\
即可正確轉義?像^172\\.(1[6789]|2\\d|30|31)\\.
但它仍然不符合我想要的方式。在這種情況下,我錯過了python和JAVA正則表達式之間的區別?
我沒有java
代碼容易獲得,但我想這個工具:http://java-regex-tester.appspot.com/,我設定目標文本172.19.0.0
和不匹配,但它確實「查找」。但是,當我輸入「blah」作爲目標文本時,它也會在「查找」部分放入某些東西...所以我不確定我是否相信這個工具http://java-regex-tester.appspot.com/,因爲它將任何字符串放在「查找」中,即使它是「嗒嗒」。
那麼,如何驗證我的java正則表達式是否正確?
「但它仍然是不匹配的方式我想:」我們可以看到你究竟是如何使用這個表達式在Java中?你的意見是什麼,預期的和實際的結果? – Pshemo
我們可以看看它是如何在python中使用的嗎? –
*猜測:*您正在使用'matches()'。不要,因爲它總是與*整個*輸入匹配。使用['find()'](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#find--)。 – Andreas