Regex 正则表达式:替换;“什么?”;使用unicode字符

Regex 正则表达式:替换;“什么?”;使用unicode字符,regex,replace,unicode,pcre,adobe-indesign,Regex,Replace,Unicode,Pcre,Adobe Indesign,我试图找出如何找到某个字符并用Unicode字符替换它。在我的示例中,我希望找到所有空格(\s),并将它们替换为窄或窄的空格(例如Unicode U+2006) 示例文本 8。3.2014年 搜索模式 (\d{1,2}\)(\s?)(\d{1,2}\)(\s?)(\d{2,4}) 替代模式 $1{UNICODE}$3{UNICODE}$5 由于某些原因,我不能用(!)替换Unicode字符,我只能搜索一个。 我正在使用一个名为»RegExRX 3«的正则表达式应用程序来测试我的字符串。最

我试图找出如何找到某个字符并用Unicode字符替换它。在我的示例中,我希望找到所有空格(\s),并将它们替换为窄或窄的空格(例如Unicode U+2006)


示例文本
8。3.2014年


搜索模式
(\d{1,2}\)(\s?)(\d{1,2}\)(\s?)(\d{2,4})


替代模式
$1{UNICODE}$3{UNICODE}$5


由于某些原因,我不能用(!)替换Unicode字符,我只能搜索一个。 我正在使用一个名为»RegExRX 3«的正则表达式应用程序来测试我的字符串。最后,我希望能够将它与Adobe的InDesign GREP功能结合使用

我知道我可以复制并粘贴正确的空格,但我对如何使用Unicode字符感兴趣


提前谢谢

InDesign使用与Perl兼容的正则表达式(pcre)。通过
\x{XXXX}
将Unicode字符输入替换字符串,其中
XXXX
是十六进制字符代码:

$1\x{2009}$2\x{2009}$5
但一般来说,您可以用您可以键入的任何字符替换。只需在“搜索和替换”对话框中放入实际的精简空间:

$1 $3 $5
您可以使用操作系统的实用程序从可用字符列表中获取精简空间,对于Windows,它是“字符映射”工具,在“常规标点”Unicode子范围中可以找到精简空间。搜索“狭小空间”也很有效。MacOS有“字符查看器”,可以做同样的事情


与替换模式中的美元参考值存在微小差异。i、 e.
$1\x{2009}$2\x{2009}$3
应该是
$1\x{2009}$3\x{2009}$5
给定OP的搜索模式中定义的组。@RobC我没有交叉检查,但你是对的。(对
\s?
进行分组是完全不必要的,无论如何,我会将它们取消分组,然后选择
$1
-
$3
)当然,我同意对
\s?
进行分组是不必要的。如果将它们解组,则替换模式将是
$1\x{2009}$2\x{2009}$3
,即
$3
,而不是
$5