正则表达式匹配以“stop”开头的字符串

时间:2009-08-06 18:05:32

标签: regex

如何创建正则表达式以匹配字符串开头的单词。我们希望在字符串的开头匹配stop,任何内容都可以跟随它。

例如,表达式应匹配:

stop
stop random
stopping

感谢。

8 个答案:

答案 0 :(得分:153)

如果您希望仅匹配以停止使用开头的行

^stop

如果您希望匹配以单词stop后跟空格

开头的行
^stop\s

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

^stop\W

另一方面,下面的内容匹配大多数正则表达式的字符串开头的单词(在这些样式中\ w与\ W相反)

^\w

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

^[a-zA-Z0-9]+

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

检查你的正则表达式味道手册,了解允许的快捷方式以及它们究竟匹配的内容(以及它们如何处理Unicode。)

答案 1 :(得分:62)

试试这个:

/^stop.*$/

说明:

  • / charachters界定正则表达式(即它们本身不属于正则表达式)
  • ^ 表示在行首处匹配
  • 后跟 * 表示匹配任何字符(。),任意次(*)
  • $ 表示行结束

如果您想强制执行该停止后跟空格,您可以像这样修改RegEx:

/^stop\s+.*$/
  • \ s 表示任何空格字符
  • \ s 后面的
  • + 表示停用词后面必须至少有一个空白字符

注意:另请注意,上面的RegEx要求停用词后跟空格!因此它不匹配仅包含: stop

的行

答案 2 :(得分:18)

如果你想在一个单词停止后匹配任何内容,不仅仅是在行的开头,你可以使用:\bstop.*\b - word followed by line

Word till the end of string

或者,如果您想匹配字符串中的字词,请使用\bstop[a-zA-Z]* - only the words starting with stop

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)

像@SharadHolani一样说。这不会匹配以" 停止"

开头的每个单词

。只有当它出现在" 停止"等行的开头时。 @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开头,后跟任何内容的单词。