簡體   English   中英

正則表達式使用? Java運算符

[英]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.

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