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之类的东西来剪切第一个和最后一个字符?我想避免它。但是好的:我认为你应该尽量避免使用正则表达式。你能展示一下导致结果的代码吗?