Regex 什么';这次换人是怎么回事?

Regex 什么';这次换人是怎么回事?,regex,perl,Regex,Perl,能帮我弄清楚发生了什么事吗 xnext如何结束在字符串的开头 [237] > cat /tmp/text.txt xtop.xnext|sig 12345 [238] > perl -p -e 's/\.xnext\\|/.xnext./;' /tmp/text.txt .xnext.xtop.xnext|sig 12345 在正则表达式中,|是“交替”元字符,而不是文字管道字符。那么你的模式呢 \.xnext\\| 可以匹配文本字符串.xne

能帮我弄清楚发生了什么事吗

xnext如何结束在字符串的开头

    [237]  > cat /tmp/text.txt
    xtop.xnext|sig 12345
    [238]  > perl -p -e 's/\.xnext\\|/.xnext./;' /tmp/text.txt
    .xnext.xtop.xnext|sig 12345

在正则表达式中,
|
是“交替”元字符,而不是文字管道字符。那么你的模式呢

\.xnext\\|
可以匹配文本字符串
.xnext\
,该字符串是在替换字符的左侧指定的,或者

无,这是在替换的右侧指定的内容

因此,输入字符串的开头与正则表达式模式匹配,替换模式
.xnext.
在字符串前面

您想要使用的模式是

\.xnext\|

这就是如何指定文本字符串
.xnext |

管道前面的反斜杠太多了。是的,但为什么它在开头放了一个“.xnext”?关于s///的一些基本信息我遗漏了?或者,它是如何决定对^(开始或行)(假设是这样的情况)?空替代项与第一个字符之前的空字符串相匹配。因为现在未替换的
|
引入了一个带有空字符串的正则表达式替代项,该替代项立即匹配。酷。谢谢各位。我本想匹配“|”,但现在我实际上说了“有或没有”,在字符串的开头找不到任何东西。。perl魔力:)