正则expression式匹配以“stop”开始的string

如何创build正则expression式来匹配string开头的单词。 我们正在寻找匹配stop在一个string的开始,任何事情都可以遵循它。

例如expression式应该匹配:

 stop stop random stopping 

谢谢。

如果您只希望匹配从停止使用开始的行

 ^stop 

如果您希望匹配以单词stop和空格开头的行

 ^stop\s 

或者,如果您希望匹配以单词stop开头的行,但后跟空格或任何其他非单词字符(您的正则expression式允许)

 ^stop\W 

另一方面,在大多数正则expression式风格(在这些风格\ w匹配\ w的相反)的string的开头,

 ^\w 

如果你的味道没有\ w快捷方式,你可以使用

 ^[a-zA-Z0-9]+ 

要小心,这第二个成语只会匹配字母和数字,没有任何符号。

检查您的正则expression式风味手册知道什么快捷方式是允许的,他们究竟是什么匹配(以及他们如何处理Unicode。)

尝试这个:

 /^stop.*$/ 

说明:

  • / charachters分隔正则expression式(即它们本身不是正则expression式的一部分)
  • ^表示匹配在行首
  • 后面跟*表示匹配任何字符(。),任意次数(*)
  • $表示行结束

如果你想强制停止后面跟着一个空格,你可以像这样修改RegEx:

 /^stop\s+.*$/ 
  • \ s表示任何空格字符
  • +跟在\的意思是至less有一个空格字符跟在停用词之后

注意:请注意,上面的RegEx要求停用词后面跟一个空格! 所以它不会匹配只包含stop的行

如果你想匹配任何字后停止,不仅可以在行的开始,你可以使用: \bstop.*\b – 单词后跟行

字直到字符串结尾

或者,如果要匹配string中的单词use \bstop[a-zA-Z]* – 仅限以停止开始的单词

只有停止的话开始

或停止^stop[a-zA-Z]*的行的开始仅用于单词 – 仅用于第一个单词
整行^stop.* – 仅string的第一行

如果你想匹配每一个string停止包括换行符使用:/ /^stop.*/s stop.*/ /^stop.*/s – 多行string开始停止

如果要匹配任何以“stop”开头的内容,包括“stop”,“stop”和“stopping”,请使用:

 ^stop 

如果你想匹配stop这个后跟“停止”,“停止”,但不是“停止”,而不是“停止”

 ^stop\W 
 /stop([a-zA-Z])+/ 

将匹配任何停用词(停止,停止,停止等)

但是,如果您只想匹配string开始处的“停止”

 /^stop/ 

会做:D

我build议不要用简单的正则expression式来解决这个问题。 有太多词是其他不相关词的子串,你可能会疯狂地试图超越已经提供的简单解决scheme。

您至less需要一个天真的词干algorithm(尝试Porter词干程序;大多数语言中都有可用的免费代码)来首先处理文本。 保留这个处理文本和预处理文本在两个单独的空间分割数组。 确保每个非字母字符在这个数组中也有自己的索引。 无论您要过滤的是什么单词,都可以阻止它们。

下一步将是find与您的“停止”字词列表匹配的数组索引。 从未处理的数组中删除这些数据,然后重新join空格。

这只是稍微复杂一些,但将是一个更可靠的方法。 如果您对更多的面向NLP的方法的价值有任何疑问,您可能需要对错误进行一些研究。