Skip to main content
 首页 » 编程设计

python之我希望使用正则表达式来获取汉字句子的中间模式

2024年11月24日31小虾米

我试着根据我的模式来取中间词。以下是我的代码:

text = "東京都田中区9-7−4" 
import re 
#Sorry due to the edit problem and stackoverflow doesnt allow me to include long sentences here, please check my comment below for the compile function of re. 
 
 
city = re.findall(r,text) 
print("getCity: {}".format(city)) 

我当前的输出:

getCity: ['都田中区'] 

我的预期输出:

getCity: ['田中区'] 

我不想拿[都道府県]所以我用“?!”在我的第一个开始模式中是 (?!...??[都道府県])。然而,当我运行我的程序时,它显示“都”也在里面,就像我在当前输出中显示的那样。有人可以指导我吗?

请您参考如下方法:

你的正则表达式的问题是它太允许了。

如果您在这里查看此可视化(我删除了所有硬编码的城市 (市) 名称,因为它们不相关):

可以看到很多“any character”重复了x次,或者只是“not 市”和“not 町”重复了x次。这些是匹配字符串中的都道府県的内容。因此,这些是你应该禁止都道府県的地方:

相应的正则表达式为:

(?:余市|高市|[^都道府県市]{2,3}?)郡(?:玉村|大町|[^都道府県]{1,5}?)[町村]|(?:[^都道府県]{1,4}市)?[^都道府県町]{1,4}?区|[^都道府県]{1,7}?[市町村] 

请记住在将其放入代码中时添加硬编码城市!