我正在尝试为outlook搜索找到一个正则表达式模式,我正在寻找分组模式来处理这个
from:Jack subject:(sending invoice) title:ibm
我使用了这种模式但是我没有在第一个单词之后得到单词
(?<name>\\w+):[(](?<value>\\w*)[)]*
答案 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)+)))