寻找正则表达式模式键:值对

时间:2012-04-15 04:10:39

标签: regex

我正在尝试为outlook搜索找到一个正则表达式模式,我正在寻找分组模式来处理这个

from:Jack subject:(sending invoice) title:ibm

我使用了这种模式但是我没有在第一个单词之后得到单词

(?<name>\\w+):[(](?<value>\\w*)[)]*

2 个答案:

答案 0 :(得分:1)

\w不处理空格,将正则表达式更改为:

(?<name>\\w+):[(](?<value>[^)]*)[)]

[^)]*表示0个或更多不正确的字符。

您可能更愿意使用[^)]+,这意味着一个或多个不正确的字符。

如果括号是可选的,请使用:

(?<name>\\w+):[(]?(?<value>[^)]+)[)]?

答案 1 :(得分:0)

“值”中的第一个括号在你的正则表达式中不是可选的

来自:杰克主题:(发票)标题:ibm

至于空格,我会这样做,因为括号不会出现在每个键值对中:

(?<name>\\w+):[(]*(?<value>(?:\\w|\\s)+)[)]*

然而,似乎该值是一个单词或一个单词序列,但在括号内 - 让我们重新编写正则表达式,否则你将在':'之后得到整个值作为第一个值:< / p>

(?<name>\\w+):(?:(?<value>\\w+)|(?:\\((?<value>(?:\\w|\\s)+)))