[英]Java, Regex, strip unwanted characters [trailing, leading, between]
我需要一個正則表達式幫助,以從字符串中剝離不需要的字符(在Java中)。 我通過互相跟隨4個正則表達式解決了這個問題。 替換將被多次調用(偷看:50次以上/秒),並降低性能。 但我認為使用單個表達式肯定有可能,因此性能會有所提高。
TestString是
" ! ... my-Cruc i@l_\\/Disp lay.Na#m3 ?;()! "
我喜歡用正則表達式執行的任務
因此結果將是
my-Cruil_Display.Nam3
問題是如何在內置模式Alnum和alpha之間進行切換,具體取決於字符串中的位置(開頭,結尾)以及它們之間的異常字符[_-。]。
在過去的幾天里,我嘗試了很多次,但是我沒有使它起作用。 刪除前導非字母字符與正則表達式一起使用
^([^\\p{Alpha}]+)?
但是,如果我附加“之間”,它將不再起作用
使用正則表達式刪除尾隨的非alpha字符
([^\\p{Alnum}]+$)
正在工作,但不能與所有其他正則表達式結合使用
最后的嘗試之一是
(^[^\\p{Alpha}]+)?[^\\p{Alnum}\\._-]+([^\\p{Alnum}]+$)
誰能幫忙
您可以使用
^\P{Alpha}+|\P{Alnum}+$|[^\p{Alnum}_.-]
Java的:
s = s.replaceAll("^\\P{Alpha}+|\\P{Alnum}+$|[^\\p{Alnum}_.-]", "");
或者,要使其能夠識別Unicode,請添加(?U)
標志:
s = s.replaceAll("(?U)^\\P{Alpha}+|\\P{Alnum}+$|[^\\p{Alnum}_.-]", "");
細節
^\\P{Alpha}+
-字符串開頭的字母字符以外的1個或多個字符 |
- 要么 \\P{Alnum}+$
-字符串末尾除字母數字字符外的任何1個或多個字符 |
- 要么 [^\\p{Alnum}_.-]
-除字母數字_
之外的任何字符.
和-
字符串中任何地方的字符 參見regex演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.