Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-两个字符之间字符串的正则表达式_Java_Regex_String - Fatal编程技术网

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

java-两个字符之间字符串的正则表达式,java,regex,string,Java,Regex,String,我怎么把东西夹在两个中间?我有这个 ^(#(.+?)#) 它返回一个字符串 #blah blah blah# 但我只想 blah blah blah 如何排除?您要查找的正则表达式是。*?请参阅。此正则表达式中有两个组。第一组外圆括号会告诉你什么,第二组会告诉你你在找什么,什么。您应该访问match.group2以获得所需的结果,其中match是matcher对象。基本思想是从捕获组中排除字符。以下内容将捕获字符之间的文本,但不会捕获字符本身: #(.*)# 现在,如果两个字符之间没有字

我怎么把东西夹在两个中间?我有这个

^(#(.+?)#)
它返回一个字符串

#blah blah blah#
但我只想

blah blah blah

如何排除?

您要查找的正则表达式是。*?请参阅。

此正则表达式中有两个组。第一组外圆括号会告诉你什么,第二组会告诉你你在找什么,什么。您应该访问match.group2以获得所需的结果,其中match是matcher对象。

基本思想是从捕获组中排除字符。以下内容将捕获字符之间的文本,但不会捕获字符本身:

#(.*)#
现在,如果两个字符之间没有字符怎么办?如果字符串为,则上面的表达式将捕获一个空字符串。那可能是你想要的。但您可能希望捕获失败。以下步骤可以做到这一点:

#(.+)#    // Force the captured string to be non-empty
现在,如果字符串可能包含两个以上的值呢?例如,如果字符串是ab,您希望它捕获ab还是a?前面的正则表达式将捕获较长的字符串。如果您想要较短的,则应使用以下任一选项:

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

因为这确实不是预期的答案-为什么不使用诸如regexedString.substring1、regexedString.length-1之类的东西来剪切第一个和最后一个字符?我想避免它。但是好的:我认为你应该尽量避免使用正则表达式。你能展示一下导致结果的代码吗?