我一直在尝试使用Gambas编写一个简单的翻译器,但我一直在使用PCRE替换两个由空格分隔的单词,PCRE是Gambas上的内置组件。
语言是土耳其语和乌兹别克语。我想替换的确切短语是“görmek istiyorum”,字面意思是“我想看”。
If ComboBox1.Text = "Turkish" And ComboBox2.Text = "Azerbaijani" Then
TextArea2.Text = TextArea1.Text
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bbana\\b", "mənə")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bben\\b", "mən")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bbenden\\b", "məndən")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bbeni\\b", "məni")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bbenim\\b", "mənim")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bistiyor\\b", "istəyir")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bo\\b", "o")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bseviyor\\b", "sevir")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bsevmek\\b", "sevmək")
Else If ComboBox1.Text = "Turkish" And ComboBox2.Text = "Uzbek" Then
TextArea2.Text = TextArea1.Text
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bben\\b", "men")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bbenim\\b", "mening")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bgörmek\\b", "ko‘rmoq")
TextArea2.Text = RegExp.Replace(TextArea2.Text, "\\bgörmek\\b\\h\\bistiyorum\\b", "ko‘rmoqchiman")
Endif
我期望它将短语从“görmek istiyorum”替换为“ko'rmoqchiman”,但输出是“ko'rmoq istiyorum”,这是混合的。
1条答案
按热度按时间gg58donl1#
好了,问题出在下面两行:
第一行将“görmek”替换为“ko'rmoq”,因此短语“görmek istiyorum”变为“ko'rmoq istiyorum”。现在,当第二行检查此文本中的正则表达式“görmek istiyorum”时,它返回false。
要纠正它,您应该首先检查最大的正则表达式匹配。所以只要切换线路就可以了: