java - 两个字符之间的字符串的正则表达式

时间:2014-02-22 15:21:34

标签: java regex string

如何在两个#之间获取内容?我有这个

^(#(.+?)#)

并返回一个字符串

#blah blah blah#

但我只想要

blah blah blah

如何排除#?

3 个答案:

答案 0 :(得分:0)

您正在寻找的正则表达式为"#(.*?)#(请参阅example)。

答案 1 :(得分:0)

此正则表达式中有两组。第一组(外括号)会给你“#blah blah blah#”,第二组会给你你想要的东西,“等等等等。”您应该访问match.group(2)以获取所需的结果,其中match是匹配器对象。

答案 2 :(得分:0)

基本思想是从捕获组中排除“#”字符。以下内容将捕获'#'而不是'#'字符本身之间的文本:

#(.*)#

现在,如果'#'之间没有字符怎么办?如果字符串是##,则上面的表达式将捕获一个空字符串。那可能就是你想要的。但您可能希望捕获失败。以下将这样做:

#(.+)#    // Force the captured string to be non-empty

现在,如果字符串可能包含两个以上的'#'怎么办?例如,如果字符串为#a#b#,您是否希望它捕获a#ba?之前的正则表达式将捕获更长的字符串。如果你想要更短的,那么下列任何一个都应该这样做:

#(.*?)#       // Like your original example
#([^#]*)#     // capture only sequences of non-# characters