正则表达式在一个完整的单词中找到两个单词

RegEx to find two words within one whole word

非常简单,但我无法让它工作。

我想在一个连续的字符串(或一个完整的单词)中找到两个单词

例子

只在整个字符串中找到 "student" 和 "name" 这两个词(不使用空格或其他 words/chars 分隔)

所以在这些中找到它...

"studentname"

"studentpreferredname"

"studentgivennames"

"student_name"

"student(^&(&(&(&&^&^&^&^&^%&^%name"

但不在这些...

"student name"

"student [multiple spaces] name"

"student is their name"

"the student's name is"

"A long time ago I wanted this student to have a similar name to"

我唯一能做的就是正则表达式:

student.*name

但这会带来上述情况,其中包含各种字符和单词。

谢谢

更新

请参阅下面的答案。

这非常有效。

\bstudent\S*name\b

如果我对你的问题的理解正确,你正在尝试匹配 studentname 之间没有 space 个字符。

如果是这样,请尝试 student[^ ]*name[^ ] 匹配一个不是 space 的字符。

正则表达式中的点 /./ 是除换行符之外的任何字符,这就是它对您不起作用的原因。

您可能需要使用 非空白 字符 /\S/,它是 /[^ \t\r\n\f]/ 的简化形式。最后,您的正则表达式应如下所示:

/student\S*name/

您可以在 documentation 的 Ruby 中阅读有关 正则表达式的更多信息。

这为我解决了(来自 here)。

\bstudent\S*name\b