我需要正則表達(dá)式的幫助以從字符串中去除不需要的字符(在 Java 中)。我用 4 個(gè)正則表達(dá)式互相解決了這個(gè)問題。替換將被多次調(diào)用 [peeks: 50+ times/sec] 它并降低性能。但是我認(rèn)為用一個(gè)表達(dá)式肯定可以,所以性能會有所提高。測試字符串是" ! ... my-Cruc i@l_\\/Disp lay.Na#m3 ?;()! "我喜歡用正則表達(dá)式執(zhí)行的任務(wù)刪除所有前導(dǎo)非字母字符 - [字符串開頭]刪除所有尾隨的非字母數(shù)字字符 - [字符串結(jié)尾]刪除所有非字母數(shù)字字符(除了 [_-.])所以結(jié)果將是my-Cruil_Display.Nam3問題在于內(nèi)置模式 Alnum 和 alpha 之間的切換,這取決于字符串中的位置(開頭、結(jié)尾)和它們之間的異常字符 [_-.]。在過去的幾天里,我嘗試了很多次,但我沒有讓它工作。使用正則表達(dá)式刪除前導(dǎo)非字母字符^([^\\p{Alpha}]+)?但是,如果我附加“之間”,它就不再起作用了使用正則表達(dá)式刪除尾隨的非 alpha 字符([^\\p{Alnum}]+$)正在工作,但不能與所有其他正則表達(dá)式結(jié)合使用最后的嘗試之一是(^[^\\p{Alpha}]+)?[^\\p{Alnum}\\._-]+([^\\p{Alnum}]+$)任何人都可以幫助完成這項(xiàng)工作
1 回答

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用
^\P{Alpha}+|\P{Alnum}+$|[^\p{Alnum}_.-]
爪哇:
s = s.replaceAll("^\\P{Alpha}+|\\P{Alnum}+$|[^\\p{Alnum}_.-]", "");
或者,要使其能夠識別 Unicode,請?zhí)砑右韵?code>(?U)標(biāo)志:
s = s.replaceAll("(?U)^\\P{Alpha}+|\\P{Alnum}+$|[^\\p{Alnum}_.-]", "");
細(xì)節(jié)
^\P{Alpha}+
- 字符串開頭的字母字符以外的任何 1 個(gè)或多個(gè)字符|
- 或者\P{Alnum}+$
- 字符串末尾除字母數(shù)字字符之外的任何 1 個(gè)或多個(gè)字符|
- 或者[^\p{Alnum}_.-]
-字符串中任意位置的除字母數(shù)字_
、.
和-
字符以外的任何字符
請參閱正則表達(dá)式演示。
添加回答
舉報(bào)
0/150
提交
取消