作为一家翻译公司,我们花了很多时间准备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会更整洁。
亲切的问候
答案 0 :(得分:2)
如果点被数字包围,为什么不简化并用空格替换所有点?你可以通过搜索
来做到这一点(?<=\d)\.(?=\d)
并使用简单的" "
替换所有内容。