繁体   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