簡體   English   中英

正則表達式Python在隨機單詞和特殊char前面添加一個char:

[英]Regex Python Adding a char before a random word and the special char :

我正在嘗試為這種類型的字符串找到正確的正則表達式:

cat: monkey, ab4 / 1997 / little: cat, 1954/ afgt22 /dog: monkey, 173 / pine-apple: duer, 129378s. / 12

我想設置的正則表達式是:

插入字符“ |” 在任何“單詞”后跟“:”之前,即為“單詞”任何類型的單詞,僅包含字符而不包含數字。

問題:

我無法找到一種方法來考慮字符串的開頭,包含'-'的單詞或特殊字符(如'/'而不是空格)開頭的單詞,如以下示例所示:

https://regex101.com/r/gX7wY0/5

如您所見,到目前為止,只有其中一個有效,但是'|' char后面有一個空格,然后是單詞“:”。

我想做的是:

|cat: monkey, ab4 / 1997 / |little: cat, 1954/ afgt22 /|dog: monkey, 173 / |pine-apple: duer, 129378s. / 12

到目前為止,只有特殊字符'-'在':'之前成為單詞的一部分。

在此先感謝您,我仍在學習如何在Python中使用正則表達式。 歡迎任何提示!

您可以使用r'\\b'搜索分詞。 對於您的情況,您正在尋找

  • 符合以下條件的子字符串: [A-Za-z\\-]+
  • 並被換行符包圍: \\b[A-Za-z\\-]+\\b
  • 並后跟一個冒號: \\b[A-Za-z\\-]+\\b:
  • 您可以使用括號捕獲單詞: \\b([A-Za-z\\-]+)\\b:
  • 並使用\\1在替換中恢復它
import re

s = 'cat: monkey, ab4 / 1997 / little: cat, 1954/ afgt22 /dog: monkey, 173 / pine-apple: duer, 129378s. / 12'

re.sub(r'(\b[A-Za-z\-]+\b):', r'|\1:', s)
# returns:
'|cat: monkey, ab4 / 1997 / |little: cat, 1954/ afgt22 /|dog: monkey, 173 / |pine-apple: duer, 129378s. / 12'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM