我有,我想匹配的樣本串:"a123456.java,a12344*javaaaaaaaaaaaaa"
正則表達式使用?運營商在java中
我用下面的正則表達式:Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");
現在?運營商意味着0次或多次發生"."
。爲什麼字符串"a12344*javaaaaaaaaaaaaa"
沒有被拾取?爲什麼*
字符不計爲0出現?
我有,我想匹配的樣本串:"a123456.java,a12344*javaaaaaaaaaaaaa"
正則表達式使用?運營商在java中
我用下面的正則表達式:Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");
現在?運營商意味着0次或多次發生"."
。爲什麼字符串"a12344*javaaaaaaaaaaaaa"
沒有被拾取?爲什麼*
字符不計爲0出現?
如果你的意思是你所期望的*由.
被拾起,因爲這意味着「什麼」:
裏面的字符類中,.
變成文字.
,而不是漢字意爲「什麼」 。
如果你想匹配任何東西,然後使用.?
代替[.]?
如果你的意思是*
不.
,所以是零次出現.
:
你是對的,但在你的正則表達式,.
後面必須跟一個字母([a-zA-Z]
),而*
顯然不是一個字母。
要澄清一下,您有:
a -> "a"
[0-9]+ -> "12344"
[.]? -> ""
[a-zA-Z]+ -> Cannot match "*"
那麼說[a]有什麼區別?並說一個? ?? – AndroidDev 2012-07-28 22:51:30
沒有,但'[。]'和'.'之間有區別。在第一種情況下,這意味着'一段時期'。在第二種情況下,它意味着'任何字符(除了換行符)「。 – 2012-07-28 22:54:09
@owlstead我編輯了答案。 – 2012-07-28 22:55:38
正確的正則表達式:a[0-9]+.*[a-zA-Z]+
[.]
意味着符號.
?
均值爲0或1
謝謝了。我不知道 。和[。]是不同的。謝謝大家的時間。 – AndroidDev 2012-07-28 23:27:55
''運營商的意思是0或1。 0或更多是'*'運算符 – Pshemo 2012-07-28 22:42:38