Regex 理解正则表达式

Regex 理解正则表达式,regex,Regex,这个正则表达式是什么意思\w+(?=@)。我试图理解这个表达方式是如何将用户从广告中拉出来的,目前它省略了一个特殊字符之前的所有字符。酒鬼。卡车司机只会导致。卡车。我要提取卡车司机维尼的全名。 非常感谢您的帮助。试试这个:当您将鼠标悬停在chars上时,它附带了非常好的解释。 这是您的正则表达式:它匹配@字符前面的字符 \w+ Match at least one word-character, i.e. letters, numbers and underscores. (?=@) M

这个正则表达式是什么意思\w+(?=@)。我试图理解这个表达方式是如何将用户从广告中拉出来的,目前它省略了一个特殊字符之前的所有字符。酒鬼。卡车司机只会导致。卡车。我要提取卡车司机维尼的全名。 非常感谢您的帮助。

试试这个:当您将鼠标悬停在chars上时,它附带了非常好的解释。
这是您的正则表达式:

它匹配@字符前面的字符

\w+    Match at least one word-character, i.e. letters, numbers and underscores.
(?=@)  Match an @-character without including it in the match.

这意味着查找紧跟@符号的任意数量的单词字符(a-z、a-z、0-9和u)。匹配的字符中不会包含@符号。如果要在表达式中包含“.”字符,可以尝试(\w |)+(?=@)

Jan AAgaard是正确的,它匹配了
@
之前的所有单词字符

它是如何做到这一点的? 更好的选择 现在,似乎要匹配
@
之前的每个字符,实现这一点的简单方法是

[^@]+(?=@)
如果您知道在一行中始终有一个
@
,您甚至可以使用它

[^@]+
只需参加第一场比赛。
如果在
@
之前始终存在一组允许的字符,您甚至可以在字符类中指定这些字符:只需将它们全部放在方括号中,例如:

[a-zA-Z0-9._]

它正在搜索任何字符、数字或下划线,后跟@

\w+(?=@)


Match a single character that is a “word character” (letters, digits, and underscores) «\w+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=@)»
   Match the character “@” literally «@»
正面和负面前瞻

如果你想匹配一些不匹配的东西,那么消极的前瞻是必不可少的 然后是其他内容。在解释字符类时 本教程解释了为什么不能使用否定字符类来 匹配一个不后跟u的q。负前瞻提供 解决方案:q(?!u)。负前瞻结构是 括号,左括号后接问号 还有一个感叹号。在“展望”中,我们有一些琐碎的东西 雷格克斯大学

正向前瞻的工作原理是一样的。q(?=u)与 后跟一个u,但不使u成为比赛的一部分。正面 lookahead构造是一对括号,带有开头 括号后跟问号和等号。您可以 在lookahead(但不是lookahead)中使用任何正则表达式, 如下所述)。任何有效的正则表达式都可以在 前瞻。如果它包含捕获组,则这些组将 正常捕获和对它们的反向引用将正常工作,甚至 在前瞻之外。(唯一的例外是Tcl,它处理所有 将lookahead内部的组视为非捕获。)lookahead本身不是 捕获组。它不包括在计数中 如果你想在里面存储正则表达式的匹配项 向前看,必须在正则表达式周围加上捕获括号 在lookahead中,如下所示:(?=(regex))。反过来说 将不起作用,因为前瞻将已放弃 在捕获组存储其匹配项时进行正则表达式匹配


\w
还包括
[0-9]
\w+(?=@)


Match a single character that is a “word character” (letters, digits, and underscores) «\w+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=@)»
   Match the character “@” literally «@»