我一直在嘗試在第一次出現特定單詞之前提取三個單詞。例如,輸入:喀拉拉邦高等法院管轄。 已知詞:管轄權。 輸出:喀拉拉邦高等法院
我嘗試了以下常規例外,但它沒有用。
m = re.search("((?:\S \s ){3,}\JURISDICTION\b\s*(?:\S \b\s*){3,})",contents)
print(m)
uj5u.com熱心網友回復:
您可以re為此使用,模式可能如下所示:^([\w ] )Jurisdiction
import re
s = """Kerala High Court Jurisdiction."""
print(re.findall(r"^([\w ] )Jurisdiction", s)[0].strip().split())
# ['Kerala', 'High', 'Court']
解釋:
re.findall(r"^([\w ] )Jurisdiction", s)
給你['Kerala High Court ']
[0].strip().split()
獲取上面串列的第一個元素,去掉空格,然后在空格處拆分它。
uj5u.com熱心網友回復:
matches = re.findall(r'(?:\b\w \s ){3}(?=Jurisdiction)', contents, flags = re.I)
for match in matched:
print(match)
該運算式在單詞“Jurisdiction”之前查找三個單詞。
re.I是使它不區分大小寫。
您應該使用前瞻(?=...)來檢查匹配是否在模式之前。?=如果您想Jurisdiction在匹配項中包含該單詞,您可以洗掉。
uj5u.com熱心網友回復:
這里有多種方法可以做到這一點:
# Method 1
# Split the sentence into words and get the index of "Jurisdiction"
data = "Word Kerala High Court Jurisdiction"
words = data.split()
new_data = words[words.index('Jurisdiction')-3:words.index('Jurisdiction')]
print(new_data) # ['Kerala', 'High', 'Court']
# Method 2
# Split the sentence to "Jurisdiction" and the text before into word
data = "Word Kerala High Court Jurisdiction"
new_data = data.split('Jurisdiction')[0].split()[-3:]
print(new_data) # ['Kerala', 'High', 'Court']
# Method 3
# Using regex
import re
data = "Word Kerala High Court Jurisdiction"
new_data = re.search(r"(\w \W ){3}(?=Jurisdiction)", data)
print(new_data.group()) # Kerala High Court
(){3}:捕獲組,重復3次。\w:匹配一個單詞字符一次到無限次。\W:匹配任何不同于單詞字符的字符一次到無限次。
(?=): 正面展望。Jurisdiction: 匹配Jurisdiction。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451642.html
上一篇:正則運算式查找錨標記無法正常作業
下一篇:如何在正則運算式密碼模式中轉義*
