使用RegEx匹配与另一个星号不相邻的单个星号

时间:2013-12-18 21:11:23

标签: regex match filemaker

我正在使用Filemaker Pro数据库。由于某种原因,它不会导出写入数据库的XML。它授权所有特殊字符使得难以将嵌入的XML导出到实际的XML文档中。为了解决这个问题,我决定在查找中使用正则表达式并将其替换为我在单词或短语两侧放置的目标星号。

示例:

**Word to put tags around*

我有一个正则表达式,它匹配两个相邻的星号。但我不记得如何匹配不与另一个相邻的单个星号。一旦我可以单独定位一个然后另一个,我将找到并用适当的标签替换它们。

2 个答案:

答案 0 :(得分:2)

如果它支持负面外观,您可以使用:

(?<!\*)\*(?!\*)

这只会匹配单个星号。

(?<!\*)会在前面带有星号的情况下阻止匹配。

(?!\*)会阻止匹配后跟星号。

答案 1 :(得分:1)

另一种选择是匹配*和周围的非*

([^*]|^)[*]([^*]|$)

Regular expression visualization

您可以使用此功能将单个*替换为**,例如

s.replace("([^*]|^)[*]([^*]|$)","$1**$2");