Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在正则表达式中间有插入符号或美元符号是有意义的吗?_Regex - Fatal编程技术网

Regex 在正则表达式中间有插入符号或美元符号是有意义的吗?

Regex 在正则表达式中间有插入符号或美元符号是有意义的吗?,regex,Regex,考虑以下正则表达式: /xyz^abc/ /xyz$abc/ 这些和什么搭配 我知道 插入符号^用于正则表达式的开头时,与行的开头相匹配 美元符号$用于正则表达式的结尾时,与行的结尾相匹配 插入符号^用作字符类的第一个字符时,会对该类求反 我相信给定的正则表达式永远不会匹配任何东西,但我不确定。这些正则表达式不会匹配任何东西。然而: /(xyz$|^xyz)/ 这将匹配以xyz开头或结尾的任何行 更新: Andy G指出,多行模式可能会为您的正则表达式字符串找到匹配项。但这仅适用于将实现配置

考虑以下正则表达式:

/xyz^abc/
/xyz$abc/
这些和什么搭配

我知道

插入符号^用于正则表达式的开头时,与行的开头相匹配 美元符号$用于正则表达式的结尾时,与行的结尾相匹配 插入符号^用作字符类的第一个字符时,会对该类求反
我相信给定的正则表达式永远不会匹配任何东西,但我不确定。

这些正则表达式不会匹配任何东西。然而:

/(xyz$|^xyz)/
这将匹配以xyz开头或结尾的任何行

更新:

Andy G指出,多行模式可能会为您的正则表达式字符串找到匹配项。但这仅适用于将实现配置为支持中间字符串锚匹配的情况

这是我最喜欢学习和理解正则表达式的地方:

/xyz^abc/
/xyz$abc/
如果你有一个由多行组成的字符串,比如第一行 第二行\n表示换行符的第二行,通常为 希望使用线条,而不是整个字符串。 因此,本教程中讨论的所有正则表达式引擎都具有 扩展两个锚的含义的选项。^然后可以在 上述字符串中f之前的字符串的开头,以及 在\n和s之间的每个换行符之后。同样,美元仍将匹配 在最后一个e之后的字符串末尾,也在每个 e和\n之间的换行符

在文本编辑器中,如EditPad Pro或GNU Emacs,以及正则表达式工具中,如 PowerGREP,插入符号和美元总是在游戏开始和结束时匹配 每行。这是有意义的,因为这些应用程序的设计目的是 使用整个文件,而不是短字符串

在本网站讨论的所有编程语言和库中, 除了Ruby,您必须显式地激活这个扩展 功能。传统上称为多线模式。在Perl中, 您可以通过在正则表达式代码后添加一个m来完成此操作,如下所示: m/^regex$/m;。在.NET中,锚点在换行之前和之后匹配 当您指定RegexOptions.Multiline时,例如在 Regex.Matchstring、Regex、RegexOptions.Multiline


根据选项,正则表达式中间的A^或A$可以导致匹配:

>>> if re.search(r'xyz.^abc', "xyz\nabc", re.MULTILINE | re.DOTALL):
...    print "Matched"
...
Matched
多行使“^”匹配行的开头,即使该行不在字符串的开头。多多尔制造了很多东西。匹配换行符

我找不到一种方法使您的确切示例与任何内容匹配。

在Perl中,$还用于将字符串变量插入正则表达式:

my $abc = 'pqr';
my $result = ('xyzpqr' =~ /xyz$abc/);   # $result is now true

我想这取决于regex的味道。它们可以匹配字面等价物“^”和“$”作为字面字符。@DanielHaley:要实现这一点,它们不需要转义吗?是否有一种正则表达式的味道可以让一个unscaped^匹配一个literal^?@RichieHindle-它们在GVIM中工作unscaped。我还没试过别的东西。我想大多数口味都需要逃逸。@RichieHindle:POSIX-BREs允许;例如,sed's/o^b/xxx/’感谢更好的例子@ruakh。我不认为多行模式与OP的例子相关,因为^和$是零宽度断言,不会吞并换行符;例如,字符串“abc\ndef”与regex/c$\n^d/匹配,但与/c$d/或/c^d/不匹配。编辑后添加:哦,我现在看到RichieHindle发布了一个答案,说明了同样的观点:-