[英]Regex using the ? Operator in java
我有一個要匹配的示例字符串: "a123456.java,a12344*javaaaaaaaaaaaaa"
我使用以下正則表達式模式: 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[0-9]+.*[a-zA-Z]+
[.]
表示符號.
?
平均0或1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.