【问题标题】:select underlined text from rtf using regex使用正则表达式从 rtf 中选择带下划线的文本
【发布时间】:2012-02-19 10:25:35
【问题描述】:

我想选择下一条带下划线的文本。您会看到富文本框的 rtf 具有以下下划线文本的代码:

\ul\i0 hello friend\ulnone\i

但正常文本看起来像下划线。我想要做的是单击按钮,rtfbox 应该选择下一条带下划线的文本。一个示例文本是:

hello [friend your] house [looks] amazing.

想象方括号内的单词带有下划线。当我第一次单击 button1 时,应选择“friend your”,然后单击“looks”。继续前进并继续选择它的应用程序类型。我知道这可以使用正则表达式完成,但无法构建逻辑。

任何帮助将不胜感激。非常感谢:D

【问题讨论】:

    标签: regex vb.net string richtextbox underline


    【解决方案1】:

    正则表达式是

    Dim pattern As String = "\\ul\\i0\s*((?:(?!\\ulnone\\i).)+)\\ulnone\\i"
    

    解释

    \\ul\\i0 # 序列 "\ul\i0" \s* # 任意数量的空白 ( # 开始第 1 组: (?: # 非捕获组: (?! # 负前瞻 ("not 其次..."): \\ulnone\\i # 序列 "\ulnone\i" ) # 结束负前瞻 . # 匹配下一个字符(带下划线) )+ # 结束非捕获组,重复 ) # 结束组 1(它将包含所有带下划线的字符) \\ulnone\\i # 序列 "\ulnone\i"

    【讨论】:

    • 非常感谢。它工作得很好,但只有一个问题。段落的开头有 \pard\ul 而不是 \ul\i0。我如何让正则表达式选择这些情况而不必构建另一个?有点像“如果 pard 出现然后采取它”的情况。抱歉在 OP 中不清楚
    • @xhammer:你对正则表达式了解多少?因为,如果这对您来说是个问题,我建议您不要使用正则表达式,直到您了解更多关于它们的信息。话虽如此,请使用(?:\\ul\\i0|\\pard\\ul)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多