例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
当前回答
试试这个:
((.|\n)*)<FooBar>
它基本上是说“任何字符或换行符”重复0次或多次。
其他回答
试题:* \ n *。*<FooBar>假设你也允许空换行。因为你允许任何字符在<FooBar>之前不包括任何字符。
这取决于语言,但应该有一个可以添加到正则表达式模式的修饰符。在PHP中是:
/(.*)<FooBar>/s
结尾的s使点匹配所有字符,包括换行符。
在语言内部使用的上下文中,正则表达式作用于字符串,而不是行。因此,假设输入字符串有多行,您应该能够正常使用正则表达式。
在这种情况下,给定的正则表达式将匹配整个字符串,因为存在"<FooBar>"。根据regex实现的具体情况,$1值(从"(.*)"中获得)将是"fghij"或"abcde\nfghij"。正如其他人所说,一些实现允许您控制“.”是否匹配换行符,从而让您做出选择。
基于行的正则表达式通常用于命令行,例如egrep。
在JavaScript中,你可以使用[^]*来搜索0到无限个字符,包括换行符。
$ (" # find_and_replace ") .click(函数(){ Var text = $("#textarea").val(); search_term = new RegExp("[^]*<Foobar>", "gi");; replace_term = "替换项"; Var new_text = text。替换(search_term replace_term); $ (" # textarea) .val (new_text); }); < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本> </button id="find_and_replace">查找并替换</button> . < br > < textarea ID = " textarea”>中的 fghij< Foobar> textarea > < /
在notepad++中你可以使用这个
<table (.|\r\n)*</table>
它将匹配从。开始的整个表
rows and columns你可以让它成为贪婪的,使用下面的方法,这样它就会匹配第一个,第二个等等表,而不是一次全部匹配
<table (.|\r\n)*?</table>