正则表达式可选组反向引用
Regexoptional group backreference
作为一家翻译公司,我们花费大量时间准备 Indesign 文件以供翻译。为此,我们已经创建了几个 JAVA 脚本。
我想要实现的一件事是用空格替换小数点。
这适用于普通数字(8.480 或 8.487),使用简单的正则表达式,如 ^(\d+)(\.)(\d+)$
但是,我们也有这样的数字组合:1.240x899x987 或 987x1.048x987。部分或全部数字可能包含也可能不包含小数点。我可以使用可选组搜索数字:^(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)$
我 运行 遇到了使用编号反向引用替换这些字符串的问题。
如果可选组不为空,则它采用编号引用,并且 $1\s$3$4 returns 1 240x。但是,如果该组为空,则反向引用编号都会更改。
有没有办法在正则表达式中检查是否为 null(如果不为 null)?所以我可以说 'if the optional group is not null, replace it with space'?
简而言之,我需要一种方法来将 1.287x989x150 和 987x1.048x987 和 987x313x1.487 更改为空格而不是单个正则表达式中的点十进制?这甚至可能吗?
目前,我已将这三种情况分成 javascript 中的非贪婪方式(匹配这三种情况的确切模式)中的单独搜索和替换 GREP,但如果可能的话, if 子句会更整洁。
亲切的问候
为什么不简化事情并用空格替换所有点,前提是这些点被数字包围?您可以通过搜索
(?<=\d)\.(?=\d)
并用简单的 " "
.
替换所有内容
作为一家翻译公司,我们花费大量时间准备 Indesign 文件以供翻译。为此,我们已经创建了几个 JAVA 脚本。
我想要实现的一件事是用空格替换小数点。
这适用于普通数字(8.480 或 8.487),使用简单的正则表达式,如 ^(\d+)(\.)(\d+)$
但是,我们也有这样的数字组合:1.240x899x987 或 987x1.048x987。部分或全部数字可能包含也可能不包含小数点。我可以使用可选组搜索数字:^(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)(x)(\d+)(\.?)(\d+)$
我 运行 遇到了使用编号反向引用替换这些字符串的问题。 如果可选组不为空,则它采用编号引用,并且 $1\s$3$4 returns 1 240x。但是,如果该组为空,则反向引用编号都会更改。
有没有办法在正则表达式中检查是否为 null(如果不为 null)?所以我可以说 'if the optional group is not null, replace it with space'? 简而言之,我需要一种方法来将 1.287x989x150 和 987x1.048x987 和 987x313x1.487 更改为空格而不是单个正则表达式中的点十进制?这甚至可能吗?
目前,我已将这三种情况分成 javascript 中的非贪婪方式(匹配这三种情况的确切模式)中的单独搜索和替换 GREP,但如果可能的话, if 子句会更整洁。
亲切的问候
为什么不简化事情并用空格替换所有点,前提是这些点被数字包围?您可以通过搜索
(?<=\d)\.(?=\d)
并用简单的 " "
.