例子: 这只是一个简单的句子。

我想匹配这句话和句子之间的每个字符。换行符应该被忽略。我想不出正确的语法。


当前回答

Sublime Text 3x

在崇高的文本中,你只需写下你感兴趣的两个单词,例如在你的例子中,它是

"This is"和"sentence"

在中间写。*

这是*句

这对你有好处

其他回答

用这个:(?=开始名)(?=结束名)

需要惰性量词

重新提出这个问题是因为公认答案中的正则表达式对我来说似乎不太正确。为什么?因为

(?<=This is)(.*)(?=sentence)

会和我的第一句话相匹配。这是我的第一句话。这是我的第二句话。

看到演示。

在两个环视之间需要一个惰性量词。增加一个?使恒星变懒。

这是你想要的:

(?<=This is).*?(?=sentence)

看到演示。我删除了不需要的捕获组。

DOTALL模式匹配跨换行

注意,在演示中设置了“点匹配换行模式”(a.k.a)点-all(参见如何在各种语言中打开DOTALL)。在许多正则表达式中,您可以使用在线修饰符(?s)设置它,将表达式转换为:

(?s)(?<=This is).*?(?=sentence)

参考

正则表达式贪婪的多种程度 星号和加号重复

我在这里搜索regex来转换这个打印语法,在Python2中的旧脚本中使用:print("string")在Python3中打印"string"。工作得很好,否则使用2to3.py进行其他转换。以下是我对其他人的解决方案:

试试Regexr.com(不工作在NP++出于某种原因):

find:     (?<=print)( ')(.*)(')
replace: ('$2')

变量:

(?<=print)( )(.*)(\n)
('$2')\n

对于标签和变量:

(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n

如何替换所有打印“字符串”在Python2打印(“字符串”)为Python3?

如果有人在Jenkins上下文中寻找这样的例子。它会解析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)
        }
    }
}

在VIM中快速搜索,你可以使用 在Vim控制提示符:/这是。*\_.*句子