EDIT。解决方案:我最终在mysql中创建连接表并使用mysql语句,因为这匹配整个字符串而不是部分。我在notepad ++中使用正则表达式为所有1800多个条目创建语句。例如: UPDATE my_table SET city_id =" 747" WHERE city_id ="城市名称&#34 ;;
我有一个包含1800多行城市名称的文本文件,我需要处理此文件以使用数值替换城市名称,以用作数据库中连接表的主键。我有一个可以执行此操作的强大的shell脚本,但是有大量重复的单词会导致问题。
我的问题是包含相同字词的城市名称' Francisco'例如:
CITY = ID
Francisco = 11
San Francisco = 25
South San Francisco = 35
Franciscoville = 99
我想要实现的目标是:
CITY = ID
11 = 11
25 = 25
35 = 35
99 = 99
我得到的是这个(fyi:看起来我把这些东西放在PS脚本的查找表中的顺序似乎并不重要):
CITY = ID
11 = 11
San 11 = 25
South San 11 = 35
11ville = 99
我想要做的就是提取像#Francisco;#39;示例(即:包含副本的最短字符串)并将它们放入单独的txt文件中。
另外,如果你看一下这个例子,我实际上必须运行几次。一旦我得到了弗朗西斯科'在一个单独的文本文件中,我现在遇到了一个新的重复问题"旧金山"也出现在包含" South San Francisco"。
的行中非常感谢任何帮助,我希望我能够清楚地理解这个问题。
编辑:我应该注意到我不知道副本实际上有多少或者是什么,我只知道有很多。我想要达到的目的是找到重复的内容然后处理它们。
答案 0 :(得分:0)
我试图找到替换操作的一般解决方案。
假设您在多行中有单词 Francisco ,并希望为它们分配不同的ID。这是相同的正则表达式。
正则表达式: .*Francisco.*( = (\d*))
<强>解释强>
Francisco
字词的行,然后是ID
。 替换为: \2\1
\2
是捕获的ID
。
\1
是= ID
部分。
答案 1 :(得分:0)
替换单词时,需要按照从最长字符串到最短字符串的顺序进行替换。这将消除您的问题,假设没有替换字符串也是搜索字符串(即Apple - &gt; Ball,Ball - &gt; Car)
对于您的示例数据,它将意味着按以下顺序替换: