簡體   English   中英

去除前導和尾隨豎線| 從Java中的字符串

[英]Strip off leading and trailing vertical bar | from string in Java

我有很多這樣的文字:

|!?:some_text!?:|

|!?some_text!?|

|?:some_text?:!|

..

在所有情況下,我都想脫掉| ? ! :它們不可能一起出現,但是它們處於前導和尾隨位置),並且僅獲得some_text

我有問題| 當我使用以下表達式在Pattern類中進行編譯時,由Java中的正則表達式引擎按字面處理:

^[?:!\|]+
[?:!\|]+$

也許,你分不清| 作為交替操作者(即非轉義|字符類外)和文字未逸出管| 在角色類中。

觀看此IDEONE演示

String p = "^[?:!|]+|[?:!|]+$";
System.out.println("|!?:some_text!?:|".replaceAll(p, ""));
System.out.println("|!?some_text!?|".replaceAll(p, ""));
System.out.println("|?:some_text?:!|".replaceAll(p, ""));

正則表達式^[?:!|]+|[?:!|]+$包含3個管道:在字符類內部(在[...]之間)是文字管道符號,而在字符類外部則是交替運算符。

用這一行

String str = "|!?:some_text!?:|";
str = str.replaceAll("[:!|?]", "");

我希望它符合標准:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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