Regex 从正则表达式转到word vba(.Find)

Regex 从正则表达式转到word vba(.Find),regex,vba,ms-word,Regex,Vba,Ms Word,我有这个正则表达式 <#([^\s]+).*?>\s?<a href=""(.*?)"".*?>(.*?)</a>(\s?\((Pending|Prepared)\))? 我真的希望有人能帮助我,因为在这种情况下,正则表达式不是一个选项,尽管我知道我可以在VBA中使用正则表达式 干杯我在文档或示例中没有看到或,因此我建议将其分为两个单独的搜索。如果您想了解更多信息,Word MVPs站点在Word Regex上也有一个标签 [^\s]可以用单词样式regex

我有这个正则表达式

<#([^\s]+).*?>\s?<a href=""(.*?)"".*?>(.*?)</a>(\s?\((Pending|Prepared)\))?
我真的希望有人能帮助我,因为在这种情况下,正则表达式不是一个选项,尽管我知道我可以在VBA中使用正则表达式

干杯

我在文档或示例中没有看到或,因此我建议将其分为两个单独的搜索。如果您想了解更多信息,Word MVPs站点在Word Regex上也有一个标签

[^\s]可以用单词样式regex写成[!]注意空格,+变成@。VBA的{n,}和{n,m}语法似乎都不支持n值为0,这使得?而且很难在Word中实现。微软的伙计们似乎使用的一个选项是*,在Word中是任意字符串。根据我的测试,*是惰性的,这意味着针对字符串asdfsadfasdf>运行的模式将只匹配。此外,它可以匹配0个字符,例如\将匹配

因此,假设第一部分按预期工作,您可以尝试以下两个正则表达式:

\*\*\*\未决\

\*\*\*\准备\

这里的问题是,*将匹配,直到它到达挂起或准备就绪的p,因此在这两者之间可能有其他文本,但这是我看到的唯一匹配可选空格的方法。如果你能保证空间会在那里,或者不会在那里,那将大大有助于使正则表达式更加安全


试试看它是否适合你

想知道为什么正则表达式不适合你吗?另外,可能值得一提的是,regex不太适合解析HTML/XML/等,您最好使用合适的DOM解析器……首先回答您的第二个问题:我知道,但我正在将流程卡从XML/HTML解决方案迁移到word文档,为此,我正在使用解析器。但是我有一些表都是用同一个xml标记编写的,但是html格式是粗体、斜体和链接,所以我在这个xml标记上使用regex来生成粗体、斜体和链接。。这部分是关于单个链接图标的一些信息。。所有这些现在都起作用了。但我需要链接后的待定/准备文本。第一个问题:我已经用.Find写了大量的这个,我真的很讨厌重写:你能给出这个正则表达式匹配的样本数据吗?谢谢你,先生!我会在下一次到达我的工作电脑时测试它,并让你知道它是否有效。。此外,我将给出一个匹配数据的示例。。如果你的答案有效,ofc也会接受。
\<\#*\>*\<a href=*\>*\<\/a\>
(\s?\((Pending|Prepared)\))?