Regex 用于匹配以特定单词开头的字符串的正则表达式
如何创建正则表达式以匹配字符串开头的单词。我们希望在字符串的开头匹配Regex 用于匹配以特定单词开头的字符串的正则表达式,regex,Regex,如何创建正则表达式以匹配字符串开头的单词。我们希望在字符串的开头匹配stop,任何东西都可以跟随它 例如,表达式应匹配: stop stop random stopping 谢谢。如果您只想匹配以“停止使用”开头的行 ^stop 如果要匹配以单词stop开头,后跟空格的行 ^stop\s 或者,如果您希望匹配以单词stop开头但后跟空格或任何其他可以使用的非单词字符的行(您的正则表达式允许) 另一方面,在大多数正则表达式风格中,后面的内容与字符串开头的单词匹配(在这些风格中\w与\w相反)
stop
,任何东西都可以跟随它
例如,表达式应匹配:
stop
stop random
stopping
谢谢。如果您只想匹配以“停止使用”开头的行
^stop
如果要匹配以单词stop开头,后跟空格的行
^stop\s
或者,如果您希望匹配以单词stop开头但后跟空格或任何其他可以使用的非单词字符的行(您的正则表达式允许)
另一方面,在大多数正则表达式风格中,后面的内容与字符串开头的单词匹配(在这些风格中\w与\w相反)
如果您的口味没有\w快捷方式,您可以使用
^[a-zA-Z0-9]+
请注意,第二个习语只匹配字母和数字,而不匹配任何符号
查看您的regex flavor手册,了解允许哪些快捷方式,它们到底匹配什么(以及它们如何处理Unicode)
将匹配任何停止字(停止、停止、停止等)
但是,如果您只想匹配字符串开头的“stop”
/^stop/
将执行以下操作:D尝试以下操作:
/^stop.*$/
说明:
- /字符分隔正则表达式(即它们本身不是正则表达式的一部分)
- ^表示在行首匹配
- 后跟*表示匹配任意字符(.),任意次数(*)
- $表示到行尾
/^stop\s+.*$/
- \s表示任何空白字符
- +后面的\s表示停止字后面必须至少有一个空格字符
注意:还要记住,上面的正则表达式要求停止字后面跟一个空格!因此,如果要匹配以“stop”(停止)开头的任何内容,包括“stop go”、“stop”(停止)和“stop”(停止),则它不会匹配仅包含:stop(停止)的行。请使用: 如果您想匹配单词stop后跟“停止前进”、“停止此操作”,但不是“停止”和“停止”,请使用:
我建议不要用简单的正则表达式方法来解决这个问题。有太多的单词是其他不相关单词的子字符串,你可能会疯狂地试图过度适应已经提供的简单解决方案 您至少需要一个简单的词干算法(试试Porter词干分析器;在大多数语言中都有可用的免费代码)来首先处理文本。将此已处理文本和预处理文本保留在两个单独的空间分割数组中。确保每个非字母字符在此数组中也有自己的索引。不管你过滤的是哪一个单词,也要把它们删掉 下一步是找到与词干“stop”单词列表匹配的数组索引。从未处理的数组中删除这些,然后在空格上重新联接
这只是稍微复杂一点,但作为一种方法将更加可靠。如果您对更面向NLP的方法的价值有任何疑问,您可能需要对其进行一些研究。如果您想匹配单词后的任何内容,请不要仅在行首使用:
\bstop.*\b
-
或者,如果要匹配字符串中的单词,请使用\bstop[a-zA-Z]*
-
或仅对单词使用stop^stop[a-zA-Z]*
作为行的开头-整行
^stop.*
-
如果要匹配以stop开头的每个字符串(包括换行符),请使用:
/^stop.*/s
-如果希望单词以“stop”开头,可以使用以下模式。
“^stop.*”
这将匹配以stop开头的单词,后跟任何单词。就像@SharadHolani说的那样。这不会匹配以“stop开头的每个单词 。只有在像“停止前进”这样的行的开头。 @瓦索给出了正确的答案: 如果您想匹配任何以“stop”开头的单词,并且只包含从A到Z的字母,那么这个单词会稍微好一些
\bstop[a-zA-Z]*\b
这将符合所有的要求
停止(1)
停止随机(2)
停止(3)
想要停止(4)
请停止(5)
但是
将只匹配(1)到(3),但不匹配(4)和(5)这将匹配“不要停止前进”这将不匹配stop123或stop,.+1来概括您的答案。我希望在堆栈溢出上看到更多这方面的内容。在我看来,这是一个更好的学习资源。如何使它不区分大小写,即匹配停止或停止或停止?取决于您的语言。。。Perl compatible可以使用I修饰符/regex/i.NET RegexOptions.IgnoreCase等不要忘记
^stop\b
,它允许任何边界,包括行尾。这很好,但不适合我的情况。我问了一个特定于我具体情况的问题,但有人告诉我这是一个“类似”的问题。不幸的是,这并不相似,因为这个问题的答案没有满足我的具体要求。那么,如果我需要一个完全像这样的词(短语)https://www.example.com/c/
?c/part后面可以有任何内容,但开头必须如此处所述。并非所有语言都使用前斜杠来分隔正则表达式。@Cat Megex:这正是我添加解释的原因。如果您的语言使用其他内容来分隔正则表达式,请使用适当的character@Mez是的,这样的冗余可以提高清晰度和性能。您能不能不使用“^stop”
/^stop.*$/
/^stop\s+.*$/
^stop
^stop\W
\bstop[a-zA-Z]*\b
/^stop[a-zA-Z]*/