Python 正则表达式检查是否没有空单词不是特定单词
我想找到一种方法来匹配特定模式中的字符串:Python 正则表达式检查是否没有空单词不是特定单词,python,regex,regex-lookarounds,Python,Regex,Regex Lookarounds,我想找到一种方法来匹配特定模式中的字符串: 。 此模式应与这些字符串匹配 object._attr a._aaa 以及具有该模式的任何其他字符串,只要点('object'和'a')前面的第一部分不是空的,并且不是文本字符串'self'。下划线后面的第二部分('attr'和'aaa')不能为空,只能包含单词字符。因此,self.\u attr,object.\u将不匹配 目前,我正试图像这样使用消极的前瞻 (?!self)\._(\w+?) 但问题是,该模式仍然与self.\u attr匹配,
。
此模式应与这些字符串匹配
object._attr
a._aaa
以及具有该模式的任何其他字符串,只要点('object'和'a')前面的第一部分不是空的,并且不是文本字符串'self'。下划线后面的第二部分('attr'和'aaa')不能为空,只能包含单词字符。因此,self.\u attr,object.\u
将不匹配
目前,我正试图像这样使用消极的前瞻
(?!self)\._(\w+?)
但问题是,该模式仍然与self.\u attr匹配,因为负前瞻与点之前的空字符串匹配
如何实际指定模式的第一部分必须是非空的
希望我的问题措辞恰当
谢谢大家您可以使用-
((?!self)\w)+\。\w++
它会比正常的速度慢一点,因为正则表达式并没有考虑否定,但这是可能的
*+确保至少有一个字符,以便您知道第一部分不是空的您可以尝试
^((?!self).)+\._(\w+?)$
如果您没有匹配完整的字符串,那么您也在尝试匹配字符串的子部分,那么您可以使用
wordboundary
或lookarounds
使用lookaround
(?<!\S)((?!self).)+\._(\w+?)(?!\S)
如果只想匹配字母表,可以将
替换为[a-zA-Z]
^((?!self)[a-zA-Z])+\._(\w+?)$
您还可以通过匹配来排除您不想要的内容,并将您想要的内容保留在一个组中
\bself\._\w*|(\w+\.\_\w+)
单词边界,\bself\.\uw*
和0+单词字符匹配self.\uu
或|
Capturegroup 1(
匹配1+字字符\w+\.\\uw+
和1+字字符。\uuu
关闭组)
|这是一个非常好的表示,您使用了什么制作它?@KaranShishoo这被称为regex可视化工具,这就是为什么不简单地
\bself\._\w*|(\w+\.\_\w+)