java正则表达式下划线_用于标识符的Java正则表达式(字母,数字和下划线)
更新2
每個標(biāo)識符必須至少包含一個字符。
必須從以下字符中選擇第一個字符:字母,下劃線或美元符號。第一個字符不能是數(shù)字。
其余字符(除第一個外)可以來自:字母,數(shù)字,下劃線或美元符號。換句話說,它可以是任何有效的標(biāo)識符字符。
簡而言之,標(biāo)識符是從字母,數(shù)字,下劃線或美元符號中選擇的一個或多個字符。唯一的限制是第一個字符不能是數(shù)字。
所以,你最好使用
String pattern = "(?:\\b[_a-zA-Z]|\\B\\$)[_$a-zA-Z0-9]*+";
更新
所以,你可以使用
String pattern = "\\b[_a-zA-Z][_a-zA-Z0-9]*\\b";
注意它允許_______。
您可以使用
String p = "\\b_*[a-zA-Z][_a-zA-Z0-9]*\\b";
為了避免這種情況。請參閱IDEONE demo。
String s = "(identifier1 identifier_2 23 4) ____ 33";
String p = "\\b_*[a-zA-Z][_a-zA-Z0-9]*\\b";
System.out.println(s.replaceAll(p, "$0#"));
輸出:(identifier1# identifier_2# 23 4) ____ 33
OLD ANSWER
您可以使用以下模式:
String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]+)*\\b";
或(如果_可以出現(xiàn)在最后):
String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]*)*\\b";
模式要求整個單詞(因為表達(dá)式用單詞邊界\b括起來)不應(yīng)該等于數(shù)字(用(?!\d+\b)檢查),以及展開的部分{{ 1}}匹配非下劃線字符塊,后跟零序或多個下劃線序列,后跟非下劃線字符塊。
[A-Za-z0-9]+(?:_[A-Za-z0-9])*
輸出:String s = "(identifier1 identifier_2 23 4) ____ 33";
String p = "\\b(?!\\d+\\b)[A-Za-z0-9]+(?:_[A-Za-z0-9]*)*\\b";
System.out.println(s.replaceAll(p, "$0#"));
總結(jié)
以上是生活随笔為你收集整理的java正则表达式下划线_用于标识符的Java正则表达式(字母,数字和下划线)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虫虫吉他曲谱
- 下一篇: NodeJs模块化(KPD)