正则表达式在MXML中找到引号之间的特定单词

时间:2012-08-21 20:51:28

标签: regex

我在网上发现了这个正则表达式,它在我的文件中找到了可能呈现给用户进行本地化清理的字符串。但是,我有一个新任务来查找两个单词的特定实例,我认为我可以使用相同的正则表达式。我已经尝试了几种组合,但是我在正则表达式方面做得还不够好。

查找字符串的当前正则表达式:

(?<=text=|label=|prompt=|toolTip=|title=|icon=|String=|Error=|Separator=|Symbol=)(("(?:\.|(\\\")|[^\""\n])*")|('(?:\.|(\\\')|[^\''\n])*'))

但是现在我想要它还可以捕获: 目录 库存 之间的任何地方报价。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

好的,我应该这样做,我相信:

(?<=text=|label=|prompt=|toolTip=|title=|icon=|String=|Error=|Separator=|Symbol=)((?:"(?:\.|(\\\")|[^\""\n])*\b(?:catalog|in stock)\b(?:\.|(\\\")|[^\""\n])*")|(?:'(?:\.|(\\\')|[^\''\n])*\b(?:catalog|in stock)\b(?:\.|(\\\')|[^\''\n])*'))

我所做的就是在引用部分添加\b(?:catalog|in stock)\b。例如,对于双引号部分,它曾经是:

"(?:\.|(\\\")|[^\""\n])*"

即。任何数量的非引号(除非转义),双引号之间的非返回字符。

现在就是这样:

"(?:\.|(\\\")|[^\""\n])*\b(?:catalog|in stock)\b(?:\.|(\\\")|[^\""\n])*"

这是双引号,上述任意数量的合法字符,“目录”或“有货”,任意数量的合法字符和引用。