例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
当前回答
请注意,(.|\n)*的效率可能低于(例如)[\s\ s]*(如果您的语言的正则表达式支持这种转译),也低于查找如何指定制造的修饰符。还要匹配换行符。或者你也可以使用POSIXy选项,比如[[:space:][:^space:]]*。
其他回答
([\ s \ s] *) < FooBar >
点匹配除换行符(\r\n)以外的所有字符。所以使用\s\ s,它将匹配所有字符。
一般来说,。不匹配换行符,因此try ((.|\n)*)<foobar>。
在语言内部使用的上下文中,正则表达式作用于字符串,而不是行。因此,假设输入字符串有多行,您应该能够正常使用正则表达式。
在这种情况下,给定的正则表达式将匹配整个字符串,因为存在"<FooBar>"。根据regex实现的具体情况,$1值(从"(.*)"中获得)将是"fghij"或"abcde\nfghij"。正如其他人所说,一些实现允许您控制“.”是否匹配换行符,从而让您做出选择。
基于行的正则表达式通常用于命令行,例如egrep。
如果您正在使用Eclipse搜索,您可以启用“DOTALL”选项来生成'。'匹配任何字符,包括行分隔符:只需在搜索字符串的开头添加“(?s)”。例子:
(?s).*<FooBar>
在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 > < /