0

我想知道是否有一种方法可以从下面示例中的正则表达式字符串开始选择

下面的示例也完全按照我想要的方式工作,但是如果在另一行之前有匹配的文本,它会选择错误的文本并突出显示它。

我想知道是否有办法获取正则表达式字符串的起始索引?

If Regex.IsMatch(Me.TextBox1.Text, "\b" + Regex.Escape("is") + "\b") Then
    Me.TextBox1.SelectionStart = Me.TextBox1.Text.IndexOf("is")
    Dim linenumber As Integer = Me.TextBox1.GetLineFromCharIndex(Me.TextBox1.Text.IndexOf("is"))
    Me.TextBox1.SelectionLength = Me.TextBox1.Lines(linenumber).Length
    Me.TextBox1.Focus()
    Me.TextBox1.SelectedText = "is " & Me.TextBox2.Text
4

1 回答 1

1

System.Text.RegularExpression.Match对象有一个属性可以帮助您:Match.IndexMatch.Index会告诉你捕获从哪里开始,而Match.Length 会告诉你它有多长。使用那些你可以改变你的代码看起来像这样:

If Regex.IsMatch(Me.TextBox1.Text, "\b" + Regex.Escape("is") + "\b") Then
    Dim m as Match
    m = Regex.Match(Me.TextBox1.Text, "\b" + Regex.Escape("is") + "\b")
    Me.TextBox1.SelectionStart = m.Index
    Dim linenumber As Integer = Me.TextBox1.GetLineFromCharIndex(m.Index)
    Me.TextBox1.SelectionLength = Me.TextBox1.Lines(linenumber).Length
    Me.TextBox1.Focus()
    Me.TextBox1.SelectedText = "is " & Me.TextBox2.Text
于 2013-08-27T05:15:34.423 回答