0

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

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

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

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

2 回答 2

1

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

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

[^)]*表示 0 个或多个不是右括号的字符。

可能是你更喜欢使用[^)]+这意味着一个或多个不是正确括号的字符。

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

(?<name>\\w+):[(]?(?<value>[^)]+)[)]?
于 2012-04-15T12:06:07.710 回答
0

'value' 中的第一个括号在您的正则表达式中不是可选的

来自:Jack 主题:(发送发票) 标题:ibm

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

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

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

(?<name>\\w+):(?:(?<value>\\w+)|(?:\\((?<value>(?:\\w|\\s)+)))
于 2012-04-15T13:56:12.187 回答