正则表达式检查 none 空词是否不是特定词
Regular expression check if none empty word is not a specific word
我想找到一种方法来匹配特定模式的字符串:
<not 'self'>._<something>
.
此模式应匹配这些字符串
object._attr
a._aaa
以及具有该模式的任何其他字符串,只要点之前的第一部分('object' 和 'a')不为空,并且不是文字字符串 'self' .下划线后的第二部分('attr' 和 'aaa')不能为空且只能包含单词字符。所以self._attr, object._
不会匹配到
目前我正在尝试像这样使用负面预测
(?!self)\._(\w+?)
但问题是这个模式仍然匹配 self._attr
,因为否定先行匹配点之前的空字符串。
我如何实际指定模式的第一部分必须是非空的。
希望我的问题表达得很好。
谢谢大家
您可以使用 -
((?!self)\w)+\.\w+
它会比正常情况下慢一些,因为在制作正则表达式时并没有考虑否定,但这是可能的。
*+ 确保至少有一个字符,因此您知道第一部分不为空
你可以试试
^((?!self).)+\._(\w+?)$
如果您没有匹配完整的字符串,您也在尝试匹配字符串的子部分,那么您可以使用 wordboundary
或 lookarounds
[=21 而不是锚点=]
使用环视
(?<!\S)((?!self).)+\._(\w+?)(?!\S)
使用单词 bouandry
\b((?!self).)+\._(\w+?)\b
如果您只想匹配字母,您可以将 .
替换为 [a-zA-Z]
^((?!self)[a-zA-Z])+\._(\w+?)$
您也可以通过匹配排除您不想要的内容,并将您想要的内容保留在一个组中。
\bself\._\w*|(\w+\.\_\w+)
\bself\._\w*
字边界,match self._
和 0+ 个字字符
|
或
(
捕获 组 1
\w+\.\_\w+
匹配 1+ 个单词字符 ._
和 1+ 个单词字符
)
关闭群组
我想找到一种方法来匹配特定模式的字符串:
<not 'self'>._<something>
.
此模式应匹配这些字符串
object._attr
a._aaa
以及具有该模式的任何其他字符串,只要点之前的第一部分('object' 和 'a')不为空,并且不是文字字符串 'self' .下划线后的第二部分('attr' 和 'aaa')不能为空且只能包含单词字符。所以self._attr, object._
不会匹配到
目前我正在尝试像这样使用负面预测
(?!self)\._(\w+?)
但问题是这个模式仍然匹配 self._attr
,因为否定先行匹配点之前的空字符串。
我如何实际指定模式的第一部分必须是非空的。
希望我的问题表达得很好。
谢谢大家
您可以使用 -
((?!self)\w)+\.\w+
它会比正常情况下慢一些,因为在制作正则表达式时并没有考虑否定,但这是可能的。
*+ 确保至少有一个字符,因此您知道第一部分不为空
你可以试试
^((?!self).)+\._(\w+?)$
如果您没有匹配完整的字符串,您也在尝试匹配字符串的子部分,那么您可以使用 wordboundary
或 lookarounds
[=21 而不是锚点=]
使用环视
(?<!\S)((?!self).)+\._(\w+?)(?!\S)
使用单词 bouandry
\b((?!self).)+\._(\w+?)\b
如果您只想匹配字母,您可以将 .
替换为 [a-zA-Z]
^((?!self)[a-zA-Z])+\._(\w+?)$
您也可以通过匹配排除您不想要的内容,并将您想要的内容保留在一个组中。
\bself\._\w*|(\w+\.\_\w+)
\bself\._\w*
字边界,match self._
和 0+ 个字字符|
或(
捕获 组 1\w+\.\_\w+
匹配 1+ 个单词字符._
和 1+ 个单词字符
)
关闭群组