如何在python中使用regex将单个拆分字符拉到一起?

2024-10-01 07:47:45 发布

您现在位置:Python中文网/ 问答频道 /正文

对于标记器,我的目标是将一个术语拆分,以便只获得单词(length>;1)。现在,为了涵盖单个字符,我想将所有紧跟其后的单个字符拉到一起,如下所示:

Q S. C Headquarter -> qsc headquarter

我使用python进行如下匹配:

pattern = re.compile(r"(?u)\b\w+\b")
pattern.findall("Q S. C Headquarter")

当然,我编译正则表达式是因为我必须多次拟合它。上面的模式将返回['Q'、'S'、'C'、'Headquarters'],而我希望返回['QSC'、'Headquartquarters']。你知道吗


Tags: 标记gtre目标模式字符单词length
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:45

我的评论/问题还没有答案,但假设可以在“连接字符词”中包含空格,您可以尝试以下正则表达式:

((?:(?<=\s|^)\w\.?\s(?!\w\w)|(?<=\s|^)\w\.?(?=\s))+|\S+)

它测试

  • 前面有空格或行首的字母(正面看后面)
  • 可选地后跟.
  • 然后是空间 后跟两个或多个字母(负向前看)

  • 前面有空格或行首的字母(正面看后面)
  • 可选地后跟.
  • 后面是空格(正面展望)

重复这个过程直到没有匹配为止。你知道吗

如果以上都没有

  • 非空格字符序列

(注意!上面的字母实际上是regexword字符类——即ASCII字母、数字或下划线_。)

第一个测试用一个字母或中间字母组成一个单词。第二,在一个正常单词前的最后一个字符,以避免捕获最后的空格。第三个测试是两个或更多字符的单词。我选择在这里测试非空格,而不是单词字符,以便能够获取首字母缩略词、缩写等。例如Q&Ae.g.。它也捕捉到了和类似的东西。你知道吗

See an example at regex101 here.

希望这有帮助。你知道吗

最后,如果空间绝对不能包含在内,我看不到其他方法,那么分两步来做。你知道吗

敬礼

相关问题 更多 >