Regexoptional group rereference

时间:2015-12-15 15:26:29

标签: regex backreference

作为一家翻译公司,我们花了很多时间准备Indesign文件进行翻译。为此,我们已经创建了几个JAVA脚本。 我想要实现的一件事就是用空格替换小数点。 这适用于正常数字( 8.480或8.487 ),使用简单的正则表达式^(\d+)(\.)(\d+)$

但是,我们也有这样的数字组合: 1.240x899x987或987x1.048x987 。部分或全部数字可能包含也可能不包含小数点。我可以使用^(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)$

使用可选组来搜索数字

我遇到了使用编号反向引用替换这些字符串的问题。 如果可选组不为null,则需要编号引用,$ 1 \ s $ 3 $ 4返回 1 240x 。但是,如果该组为空,则后向引号将全部更改。

有没有办法在正则表达式中检查null(如果不是null)?所以我可以说'如果可选组不为null,请将其替换为空格'? 简而言之,我需要一种方法在单个正则表达式中将 1.287x989x150和987x1.048x987以及987x313x1.487 更改为空格而不是点小数?这甚至可能吗?

目前,我已经将这三个案例分成了一个非贪婪的javascript中的单独的搜索和替换GREP(匹配这三个事件的确切模式),但是如果可能的话,if-clause会更整洁。

亲切的问候

1 个答案:

答案 0 :(得分:2)

如果点被数字包围,为什么不简化并用空格替换所有点?你可以通过搜索

来做到这一点
(?<=\d)\.(?=\d)

并使用简单的" "替换所有内容。

相关问题