编辑。解决方案:我最终在mysql中创建联接表并使用mysql语句,因为它与整个字符串而不是部分字符串匹配。我在notepad ++中使用了正则表达式来为所有1800多个条目创建语句。例如:
更新my_table SET city_id =“ 747”,city_id =“城市名称”;



我有一个包含1800多行城市名称的文本文件,我需要处理该文件以将城市名称替换为数值,以用作数据库中联接表的主键。我有一个可以正常运行的Power 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


我得到的是这个(仅供参考:我将内容放入PS脚本的查找表中的顺序似乎并不重要):

CITY = ID
11 = 11
San 11 = 25
South San 11 = 35
11ville = 99


我想做的是提取所有单词,例如“ Francisco”示例(即包含重复项的最短字符串),然后将其放入单独的txt文件中。

另外,如果您看一下示例,我实际上必须运行几次。一旦将“ Francisco”行输入到单独的文本文件中,我现在有了一个新的重复问题,即“ San Francisco”也出现在包含“ South San Francisco”的行中。

任何帮助将不胜感激,我希望我已将问题弄清楚了,可以理解。

编辑:我应该注意,我不知道实际上有多少个重复项或什么重复项,我只是知道有很多重复项。我要实现的目标是找到重复项,然后对其进行处理。

最佳答案

我试图为您的替换操作提出一个通用的解决方案。

假设您在多行中有Francisco一词,并希望为其分配不同的ID。这是相同的正则表达式。

正则表达式:.*Francisco.*( = (\d*))

说明:


这将使其中带有单词Francisco的行与后跟ID的行匹配。


替换操作:\2\1


\2是捕获的ID
\1= ID的一部分。


Regex101 Demo

09-13 08:44