我希望能够搜索字符串中的各种单词,当我找到一个时,我想将该点的字符串拆分为3个部分(左,匹配,右),匹配的文本将被排除,并且该过程将继续使用左侧+右侧的新字符串.
现在,一旦我完成所有比赛,我需要通过在被删除的位置重新插入匹配的单词(或替换它们)来反转该过程.我在任何搜索中都没有真正找到我想要的东西,所以我想我会在SO上请求输入.
如果这个问题需要进一步说明,请告诉我.
顺便说一句 - 目前,我有一个非常糟糕的算法,用一个唯一的字符串标记替换匹配的文本,然后在所有匹配完成后用适当的匹配替换文本替换标记.
这是目标:
one two three four five six
匹配"三"替换为foo(记得我们找到了三个,我们找到了它)
one two four five six | three
匹配"两个四"并防止它被任何东西匹配(为清晰起见编辑)
one five six | two four | three
在这一点上,你不能匹配例如"一二"
所有的比赛都已找到,现在重新安排他们的替补(以相反的顺序)
one two four five six | three one two foo four five six
重点是什么?防止一个匹配的替换文本与另一个模式匹配.(对于每个处理的字符串,所有模式都在同一时间运行,并且顺序相同)
我不确定语言是否重要,但我在这种情况下使用的是Lua.
我会尝试改写,我有一个我希望在给定字符串中找到的模式列表,如果我找到一个,我想删除字符串的那部分所以它不匹配其他任何东西,但我想跟踪在哪里我发现它所以我可以在我尝试匹配我的模式列表时插入替换文本
这是一个相关的问题:
Shell脚本 - 使用字符串列表搜索和替换多个文件中的文本