正则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的方法的价值有任何疑问,您可能需要对错误进行一些研究。