我的正则表达式'(\<link [^\>]+\>)'
匹配正常,但在它前面添加了一个空格而且它不是' (\<link [^\>]+\>)'
(没有'
)。
当我使用正则表达式匹配link
标记时,它完全匹配:
$ echo '<para>Please see Listing <link href="#lst:11-alg1">2.1</link> with the' \
| perl -pe 's|(\<link [^\>]+\>)|###|g'
<para>Please see Listing ###2.1</link> with the
正如您所看到的,<link...>
被###
取代 - 因此正则表达式匹配。
当我在正则表达式之前添加单个空格时,它不再匹配:
$ echo '<para>Please see Listing <link href="#lst:11-alg1">2.1</link> with the' \
| perl -pe 's| (\<link [^\>]+\>)|###|g'
<para>Please see Listing <link href="#lst:11-alg1">2.1</link> with the
结果仍然是原始文本,没有替换 - 正则表达式不匹配。
我认为问题是贪婪的匹配(但我无法想象在哪里),我玩+?
- 修饰符和\s
,但没有效果。而且,正则表达式也不是以' '
开头:当我将Listing
添加到它不匹配的模式时:
$ echo '<para>Please see Listing <link href="#lst:11-alg1">2.1</link> with the' \
| perl -pe 's|Listing (\<link [^\>]+\>)|###|g'
<para>Please see Listing <link href="#lst:11-alg1">2.1</link> with the
我甚至尝试过与Python相同:结果相同,所以我的正则表达式一定是错的。
答案 0 :(得分:0)
如果将字符串复制到Notepad ++中,它是列出ANSI(‡)之后的特殊字符。所以空间不匹配。