2015-11-17 28 views
0

字符串我有文本块这样的:剥离前后垂直条|从Java中

|!?:some_text!?:|

|!?some_text!?|

|?:some_text?:!|

..

在任何情况下,我想脱掉|?!:(它们不可能一起发生,但是他们处于领先位置和尾随位置),并且只获得some_text

我有有|的Java中的正则表达式引擎,当我使用下列表达式Pattern要编译类字面上处理问题:

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

你没有逃跑的管道在字符类。 –

+1

'^ [?:!| + | [?:!|] + $'应该就够了。 –

+0

请参阅[IDEONE演示](http://ideone.com/sFK9yp) –

回答

1

也许,你迷惑|为交替操作(即转义|在字符类外)和字符类内的字面非转义管|

见本IDEONE demo

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

正则表达式^[?:!|]+|[?:!|]+$中有3个管道:一个字符类中(间[...])它是一个文字管道符号,和它以外,它是一个交替操作。

1

使用这一行

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

我希望它符合标准:)