regex - 快速正则表达式 Perl 未终止

标签 regex perl

我正在尝试将 Wiki 标记转换为 HTML 标记,即

[[Image:wiki.png]]
[[Image:wiki.png|Wikipedia, The Free Encyclopedia.]]

<img src="wiki.png" alt=""/>
<img src="wiki.png" alt="Wikipedia, The Free Encyclopedia."/>

使用一行Perl

s/\[\[Image:(\w+?\.png)\|{0,1}(.*?)\]\]/g;
print;

但是 Perl 不断抛出错误

Substitution replacement not terminated

它适用于 this RegExr test并且更改分隔符并没有解决问题。任何见解将不胜感激。

最佳答案

您有一个没有替换字符串的正则表达式替换。它应该看起来像

s/PATTERN/REPLACEMENT/

而你只有

s/PATTERN/

所以 Perl 告诉你替换没有终止。

这个程序使用你的正则表达式来做你想做的事

use strict;
use warnings;

for (<DATA>) {
  s/\[\[Image:(\w+?\.png)\|{0,1}(.*?)\]\]/<img src="$1" alt="$2"\/>/g;
  print;
}

__DATA__
[[Image:wiki.png]]
[[Image:wiki.png|Wikipedia, The Free Encyclopedia.]]

输出

<img src="wiki.png" alt=""/>
<img src="wiki.png" alt="Wikipedia, The Free Encyclopedia."/>

关于regex - 快速正则表达式 Perl 未终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036418/

相关文章:

perl - 使用 Moose 进行对象组合的最佳方法是什么?

linux - 向父进程的另一个线程中生成的子进程发送 TERM 信号

mysql - 用于将多个 CSV 文件导入 MySQL 数据库的 Perl 脚本

C# - 正则表达式匹配整个单词

php - 我需要在 mongo php 中使用类似查询

javascript - 使用正则表达式查找文本并仅获取其中的一部分

javascript - JS中带有UTF8字符的正则表达式自动换行

python - 打开文件并阅读句子

perl - 如何使用 Perl 的 LWP::Simple 发送 cookie?

perl - 在 qx 运算符中将 perl 数组拆分为单独的参数