如何在python的字符类中编写单词边界而不丢失其含义?我希望在单词边界( b)的定义中添加下划线(_)

如何在python的字符类中编写单词边界而不丢失其含义?我希望在单词边界( b)的定义中添加下划线(_),第1张

如何在python的字符类中编写单词边界而不丢失其含义?我希望在单词边界( b)的定义中添加下划线(_)

您可以使用环顾四周:

(?:b|(?<=_))word(?=b|_)^^^^^^^^^^^^^     ^^^^^^^

请参阅regex演示,其中

(?:b|(?<=_))
是一个非捕获组,它匹配单词边界或前缀为的位置
_
,并且
(?=b|_)
是一个正向超前匹配字词边界或
_
符号的匹配项。

不幸的是,Python

re
不允许使用,
(?<=b|_)
因为后向模式的宽度应固定(否则,您将得到
look-behind requiresfixed-width pattern
错误)。

一个Python的演示:

import rerx = r"(?:b|(?<=_))word(?=b|_)"s = "some_word_here and a word there"print(re.findall(rx,s))

另一种解决方案是使用自定义单词边界,例如

(?<![^W_])
/
(?![^W_])
(请参阅在线演示):

rx = r"(?<![^W_])word(?![^W_])"

(?<![^W_])
如果没有非单词和
_
char以外的字符,否定的lookbehind匹配失败(因此,它要求字符串的开头或任何单词char不包括搜索词
_

之前 的字符),
(?![^W_])
如果没有其他char
,否定的lookahead将失败而不是非单词和
_
字符(也就是说,要求字符串的末尾或不包括在内的单词字符
_
)。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5629519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存