如何创建正则表达式以匹配字符串开头的单词。我们希望在字符串的开头匹配stop
,任何内容都可以跟随它。
例如,表达式应匹配:
stop
stop random
stopping
感谢。
答案 0 :(得分:153)
如果您希望仅匹配以停止使用开头的行
^stop
如果您希望匹配以单词stop后跟空格
开头的行^stop\s
或者,如果您希望匹配以单词stop开头但后跟空格或任何其他非单词字符的行,您可以使用(您的正则表达式允许)
^stop\W
另一方面,下面的内容匹配大多数正则表达式的字符串开头的单词(在这些样式中\ w与\ W相反)
^\w
如果你的味道没有\ w的快捷方式,你可以使用
^[a-zA-Z0-9]+
要小心这第二个成语只会匹配字母和数字,而不是任何符号。
检查你的正则表达式味道手册,了解允许的快捷方式以及它们究竟匹配的内容(以及它们如何处理Unicode。)
答案 1 :(得分:62)
试试这个:
/^stop.*$/
说明:
如果您想强制执行该停止后跟空格,您可以像这样修改RegEx:
/^stop\s+.*$/
注意:另请注意,上面的RegEx要求停用词后跟空格!因此它不匹配仅包含: stop
的行答案 2 :(得分:18)
如果你想在一个单词停止后匹配任何内容,不仅仅是在行的开头,你可以使用:\bstop.*\b
- word followed by line
或者,如果您想匹配字符串中的字词,请使用\bstop[a-zA-Z]*
- only the words starting with stop
或仅为单词停止^stop[a-zA-Z]*
的行的开头 - first word only
整行^stop.*
- first line of the string only
如果您想匹配以停止开头的每个字符串(包括换行符),请使用:/^stop.*/s
- multiline string starting with stop
答案 3 :(得分:13)
。只有当它出现在" 停止"等行的开头时。 @Waxo给出了正确答案:
这个 略微 更好,如果你想匹配任何以&#34开头的单词; 停止"并且只包含 A到Z 中的字母。
class ViewController: UIViewController {
let dateFormatter: DateFormatter = DateFormatter()
var split_date: [String]!
let Date_Str = "01.01.0001.00.00"
var _isBeforeFirstYear: Bool = true
override func viewDidLoad() {
super.viewDidLoad()
dateFormatter.dateFormat = "MM.dd.yyyy.HH.mm"
split_date = Date_Str.components(separatedBy: ".")
if (_isBeforeFirstYear) {
split_date[2] = String(format: "%04d", (Int(split_date[2]))!-1)
print (split_date[2]) // year = 0000
} else {
print (split_date[2]) // year = 0001
}
}
}
这将匹配所有
停止(1)
停止随机(2)
停止(3)
想停止(4)
请停止(5)
但是
\bstop[a-zA-Z]*\b
只会匹配(1)直到(3),但不会匹配(4)& (5)
答案 4 :(得分:6)
/stop([a-zA-Z])+/
将匹配任何停止词(停止,停止,停止等)
但是,如果你只想在字符串的开头匹配“停止”
/^stop/
会做:D
答案 5 :(得分:6)
如果你想匹配以“停止”开头的任何内容,包括“停止”,“停止”和“停止”使用:
^stop
如果你想匹配单词停止后跟“停止前进”,“停止此”,但不是“停止”而不是“停止”使用:
^stop\W
答案 6 :(得分:0)
我建议不要使用简单的正则表达式解决这个问题。有太多的单词是其他无关单词的子串,你可能会疯狂地试图超越已经提供的更简单的解决方案。
你至少需要一个简单的词干算法(尝试使用Porter词干分析器;大多数语言中都有可用的免费代码)来处理文本。将此处理过的文本和预处理文本保存在两个单独的空间拆分数组中。确保每个非字母字符也在此数组中获得自己的索引。无论你过滤什么单词列表,也要阻止它们。
下一步是找到与你的'stop'单词列表相匹配的数组索引。从未处理的数组中删除它们,然后重新加入空格。
这只是稍微复杂一点,但是方法会更加可靠。如果您对更加面向NLP的方法的价值有任何疑问,您可能需要对clbuttic mistakes进行一些研究。
答案 7 :(得分:0)
如果您希望单词以“停止”开头,则可以使用以下模式。 “^停止。*”
这将匹配以stop开头,后跟任何内容的单词。