Regex匹配两个字符串之间的所有字符。

Regex匹配两个字符串之间的所有字符。

例子:“这只是\n简单的句子”。

我想在“这是”和“句子”之间匹配每一个字符。应忽略换行符。我搞不懂正确的语法。


扬帆大鱼
浏览 874回答 3
3回答

慕标5832272

例如(?<=This&nbsp;is)(.*)(?=sentence)雷杰克斯我用的是看台(?<=)向前看(?=)所以“这是”和“句子”不包括在匹配中,但是这取决于您的用例,您也可以简单地编写This is(.*)sentence.这里最重要的是激活regex引擎的“dotall”模式,这样.正在匹配换行符。但是你是如何做到这一点的取决于你的正则表达式引擎。下一件事是如果你用.*或.*?..第一个是贪婪的,将匹配到你的字符串中的最后一个“句子”,第二个是懒惰的,将匹配到你的字符串中的下一个“句子”。更新雷杰克斯This&nbsp;is(?s)(.*)sentence其中,(?s)打开dotal修饰符,使.匹配换行符。更新2:(?<=is&nbsp;\()(.*?)(?=\s*\))与你的例子“这是(一个简单的)句子”相匹配。看这里雷杰克斯

慕码人2483693

懒惰量词重新提出这个问题,因为在我看来,公认答案中的准则似乎不太正确。为什么?因为(?<=This&nbsp;is)(.*)(?=sentence)将匹配my first sentence. This is my second在……里面This is my first sentence. This is my second sentence.见演示.你需要在两个看台之间设置一个懒惰的量词。添加?让星星变得懒惰。这符合您的要求:(?<=This&nbsp;is).*?(?=sentence)见演示..我删除了捕获组,这是不需要的。DOTALL模式以匹配跨线中断注意,在演示中,“点匹配换行模式”(a.k.a.)点-所有设置(见如何用各种语言打开DOTALL)。在许多regex风格中,您可以使用在线修饰符来设置它。(?s),把这句话变成:(?s)(?<=This&nbsp;is).*?(?=sentence)参照系许多程度的Regex贪婪重复与星和加

宝慕林4294392

试一试This is[\s\S]*sentence,在javascript中工作
打开App,查看更多内容
随时随地看视频慕课网APP