示例:“这只是一个简单的句子”。
我想匹配“这是”和“句子”之间的每个字符。 换行符应忽略。 我找不到正确的语法。
#1楼
使用这个: (?<=beginningstringname)(.*\\n?)(?=endstringname)
#2楼
需要惰性量词
重新提出这个问题,因为接受的答案中的正则表达式对我而言似乎不太正确。 为什么? 因为
(?<=This is)(.*)(?=sentence)
会匹配my first sentence. This is my second my first sentence. This is my second This is my first sentence. This is my second sentence. This is my first sentence. This is my second sentence.
您需要在两种环视之间使用惰性的量词。 添加? 使星星懒。
这符合您的要求:
(?<=This is).*?(?=sentence)
参见演示 。 我删除了捕获组,这不是必需的。
DOTALL模式以匹配整个换行符
请注意,在演示中,设置了“点匹配换行模式”(aka)点全名(请参阅如何以各种语言打开DOTALL )。 在许多正则表达式中,您可以使用在线修饰符(?s) ,将表达式转换为:
(?s)(?<=This is).*?(?=sentence)
参考
#3楼
这个:
This is (.*?) sentence
在javascript中工作。
#4楼
您可以简单地使用: \\This is .*? \\sentence \\This is .*? \\sentence
#5楼
如果有人在詹金斯语境中寻找这样的例子。 它解析build.log,如果找到匹配项,则使用匹配项使构建失败。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
node{
stage("parse"){
def file = readFile 'build.log'
def regex = ~"(?s)(firstStringToUse(.*)secondStringToUse)"
Matcher match = regex.matcher(file)
match.find() {
capturedText = match.group(1)
error(capturedText)
}
}
}