【发布时间】:2011-03-26 12:56:11
【问题描述】:
我有一个旧 wiki,我正在将其转换为一个使用 Markdown 和 [[]] wiki 链接格式的新 wiki。不幸的是,旧 wiki 真的 很旧,并且有 许多 生成链接的方法,包括。 CamelCase、单括号 ([]) wiki 链接等。
我正在转换sed 中的正则表达式,并使用以下正则表达式将独立的 CamelCase 链接转换为双括号 ([[]]) wiki 链接:
s/([^[|])([A-Z][a-z]+[A-Z][A-Za-z]+)([^]|])/\1\[\[\2\]\]\3/g
不幸的是,上述的一个问题(我试图在现有的单括号 wiki 链接中不转换 CamelCase,因为两者兼而有之)是 [BluetoothConnection|UsingBluetoothIndex] 之类的东西将被转换为 [BluetoothConnection|Using[[BluetoothInde]]x]。
如何解决此问题并强制匹配更加贪婪,从而失败并且在这种情况下不进行替换?如果sed 的增强正则表达式过于局限,我愿意通过perl 而不是sed。
【问题讨论】:
-
字符串
[BluetoothConnection|UsingBluetoothIndex]的预期输出是什么 -
[BluetoothConnection|UsingBluetoothIndex]应该保持不变,以供以后的正则表达式处理。