我正在尝试构建一个执行以下操作的应用程序:
1)在richtextbox中写一些文字
2)当用户点击按钮时,该应用会将文字替换为{}括号中的其他文字。
我想要的是下一次,正则表达式搜索任何文本,它应该排除{}中存在的文本。
例如:
我的世界是美好的世界,是一个幸福的世界,对每个人来说都是一个更美好的世界。
第一次传递 - 更改“世界”一词
我的{world | happy place | home}是一个很好的{world | happy place | home}和一个快乐的{world | happy place | home},对每个人来说都是一个更好的{world | happy place | home}。< / p>
第二次传递 - 更改单词“happy”
在这个传递中,我希望正则表达式忽略被{}包围的所有实例。注意单词happy来自{world | happy place | home},但不应该被触及。
现在有人可以帮我构建这个正则表达式吗?
简单来说,我想要包含这个词,并排除介于{}之间的所有内容。另请注意,单词可以是一个字符串。
例如:有时我可能想要替换字符串“happy place”。
除了正则表达式之外的任何其他逻辑也可以提供帮助。
我的代码是:
Dim fil2 As New StreamReader("new2.txt")
Dim i As Integer = 0
Dim start2 As Integer = 0
Dim rgx As Regex
Dim rpl As String = RichTextBox1.Text
Do While fil2.Peek > -1
Dim StringToCheck As String = fil2.ReadLine()
Dim prev As String = StringToCheck.Split("|")(0).Trim()
If (StringToCheck.Split("|")(0).Split(" ").Count >= 2) Then
Try
rgx = New Regex("(?<=(^|})[^{]*)" & prev & "(?=[^}]*($|{))")
Dim z As Integer = 0
rpl = rgx.Replace(rpl, "{" & StringToCheck & "}")
Catch ex As Exception
End Try
End If
Loop
fil2.Close()
rpl = rpl.Replace("{? ?|? ?|? ! ?}", " ")
RichTextBox1.Text = rpl
MsgBox("done")
答案 0 :(得分:0)
你可以使用lookaheads和lookbehinds:
"(?<=(^|})[^{]*)happy(?=[^}]*($|{))"