Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,有人能解释一下正则表达式引擎在尝试匹配时是如何工作的吗 ^4$ to 749\n486\n4 我指的是正则表达式引擎在执行匹配时如何解析字符串。正则表达式^4$表示匹配一行,该行只包含一个数字4 如果将此regexp应用于包含换行符的字符串,则它会将字符串的第一个字符视为行首,将第一个换行符视为行尾。换行符后的其他字符实际上被忽略。perl中的示例 DB<1> $str="749\n486\n4"; DB<2> x $str =~ /^4$/ empt

有人能解释一下正则表达式引擎在尝试匹配时是如何工作的吗

  ^4$ to 749\n486\n4 

我指的是正则表达式引擎在执行匹配时如何解析字符串。正则表达式
^4$
表示匹配一行,该行只包含一个数字4

如果将此regexp应用于包含换行符的字符串,则它会将字符串的第一个字符视为行首,将第一个换行符视为行尾。换行符后的其他字符实际上被忽略。perl中的示例

  DB<1> $str="749\n486\n4";
  DB<2> x $str =~ /^4$/
  empty array
然而,regexp实现有一种方法来处理这个问题。存在多行设置。在perl中

  DB<3> x $str =~ /^4$/m
0  1
DB x$str=~/^4$/m
0  1
用python

>>> re.search('^4$',s,re.MULTILINE)
<_sre.SRE_Match object at 0x7f446874b030>
>re.search(“^4$”,s,re.MULTILINE)
python文档这样解释多行模式

关于多行 指定时,模式字符“^”在字符串的开头和结尾处匹配 每行的开头(紧跟其后 每条新线);并且模式字符“$”在 字符串,并在每行末尾(紧靠每行前面 新行)。默认情况下,“^”仅在字符串开头匹配, 和“$”仅在字符串末尾和 字符串末尾的换行符(如果有)

如果在多行字符串中,您真的想知道它是否在一行上以数字4结尾,那么这有一个语法特性

  DB<4> x $str =~ /^4\z/m
0  1
DB x$str=~/^4\z/m
0  1
请特别参阅m标志和\a、\z、\z 或者

看看
  DB<4> x $str =~ /^4\z/m
0  1