![](/img/trans.png)
[英]regex to match the minimum length of each word in a sentence in Python
[英]how to match either word or sentence in this Python regex?
我對正則表達式相當熟悉,但這很棘手。 我需要從 SQL 案例陳述中找到這樣的實例:
當 col_name = '這可以是一個單詞或句子'
當它只有一個詞時,我可以匹配上面的內容,但是當它超過一個詞時,它就不起作用了。
s = """when col_name = 'a sentence of words'"""
x = re.search("when\s(\w+)\s*=\s*\'(\w+)", s)
if x:
print(x.group(1)) # this returns "col_name"
print(x.group(2)) # this returns "a"
我希望 group(2) 返回“一個單詞的句子”,但我只是得到第一個單詞。 那部分可以是一個詞,也可以是幾個詞。 怎么做?
當我添加第二個 \' 時,我找不到匹配項:
x = re.search("when\s(\w+)\s*=\s*\'(\w+)\'", s)
您可以使用 Group 2 模式匹配除單引號以外的所有字符,而不是匹配字母、數字和連接標點符號(“word”字符):
import re
s = """when col_name = 'a sentence of words'"""
x = re.search(r"when\s+(\w+)\s*=\s*'([^']+)", s)
if x:
print(x.group(1)) # this returns "col_name"
print(x.group(2)) # this returns "a sentence of words"
請參閱Python 演示
[^']
是一個否定字符 class 匹配除單引號之外的任何字符,請參閱正則表達式演示。
如果字符串可以包含轉義的單引號,您可以考慮將[^']
替換為
'
: ([^']*(?:''[^']*)*)
\
: ([^\\']*(?:\\.[^'\\]*)*)
。請注意使用原始字符串文字來定義正則表達式模式(所有反斜杠都被視為其中的文字反斜杠)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.