我正在尝试为 Outlook 搜索找到一个正则表达式模式,我正在寻找分组模式来处理这个
from:Jack subject:(sending invoice) title:ibm
我使用了这种模式,但我没有得到第一个单词之后的单词
(?<name>\\w+):[(](?<value>\\w*)[)]*
我正在尝试为 Outlook 搜索找到一个正则表达式模式,我正在寻找分组模式来处理这个
from:Jack subject:(sending invoice) title:ibm
我使用了这种模式,但我没有得到第一个单词之后的单词
(?<name>\\w+):[(](?<value>\\w*)[)]*
\w
不处理空格,将您的正则表达式更改为:
(?<name>\\w+):[(](?<value>[^)]*)[)]
[^)]*
表示 0 个或多个不是右括号的字符。
可能是你更喜欢使用[^)]+
这意味着一个或多个不是正确括号的字符。
如果括号是可选的,请使用:
(?<name>\\w+):[(]?(?<value>[^)]+)[)]?
'value' 中的第一个括号在您的正则表达式中不是可选的
来自:Jack 主题:(发送发票) 标题:ibm
至于空格,我会这样做,因为括号并不存在于每个键值对中:
(?<name>\\w+):[(]*(?<value>(?:\\w|\\s)+)[)]*
但是,该值似乎是一个单词或一个单词序列,但在括号内 - 让我们重新编写正则表达式,否则您将在 ':' 作为第一个值之后得到整个内容:
(?<name>\\w+):(?:(?<value>\\w+)|(?:\\((?<value>(?:\\w|\\s)+)))