[英]Split string using regular expression, how to ignore apostrophe?
我正在用 Python 做一個拼寫檢查教程,它使用這個正則表達式:
import re
def split_line(line):
return re.findall('[A-Za-z]+(?:\`[A-Za-z)+)?',line)
我想知道您是否可以幫助我更改此功能,使其忽略'
,即如果我輸入字符串he's
我將得到['he's']
而不是['he','s']
。
首先,您需要按Marcin所述將)
替換為]
來修復原始表達式。 然后只需將'
添加到允許的字符列表中(以反斜杠轉義):
import re
def split_line(line):
return re.findall('[A-Za-z\']+(?:\`[A-Za-z]+)?',line)
split_line("He's my hero")
#["He's", 'my', 'hero']
當然,這將不考慮撇號在單詞的開頭或結尾處的任何邊緣情況。
您的正則表達式應該匹配一個或多個字母,然后可選地出現一個反引號,然后再匹配一個或多個字母。 您可以將反引號放入字符類並將'
添加到類中。
請注意,如果您使用雙引號字符串文字,則不需要轉義'
:
re.findall(r"[A-Za-z]+(?:['`][A-Za-z]+)*", line)
請參閱正則表達式演示。 詳情:
[A-Za-z]+
- 一個或多個 ASCII 字母(使用[^\\W\\d_]+
匹配任何一個或多個 Unicode 字母)(?:['`][A-Za-z]+)*
- 零次或多次出現'
或反引號,后跟一個或多個 ASCII 字母。請參閱Python 演示:
import re
text = "And he's done it o`key!"
print(re.findall(r"[A-Za-z]+(?:['`][A-Za-z]+)*", text))
# => ['And', "he's", 'done', 'it', 'o`key']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.