正则表达式模式匹配,直到包含特定字符

时间:2017-07-06 09:00:54

标签: regex

考虑以下字符串:

ab cd ef gh/

如何提取ab cd ef
我希望能够匹配到包含特定字符的第一个系列之前的第一个空格,在上面的例子中是/

编辑:我试图设置一个配置文件来解析一些日志到Logstash,所以我想知道是否可以用正则表达式规则来做这件事。

3 个答案:

答案 0 :(得分:2)

([^\/]+)\s+[^\/]*\/

说明:

(      start of Subpattern
[^\/]+ match one or more Elements that are no /.
       ^ is the Negation-Operator
       / needs to be escaped.
       + stands for one or more
)      end of Subpattern
\s+    match one or more Whitespaces
[^\/]* match no or any amount of Characters that are not a /
       * stands for Zero or any Amount 
\/     match /

Subpattern的内容返回Match。

示例:

preg_match('/([^\/]+)\s+[^\/]*\//', $input, $result);

print_r($result);

答案 1 :(得分:0)

你可以尝试这样的事情:



function matchInString(str) {
  regex = /(.*) \w*\/\w*/
  m = str.match(regex)
  if (m) {
    console.log(m[1])
  }
}

matchInString("ab cd ef gh/")
matchInString("ab cd ef gh/asdfasdf")
matchInString("ab cd ef gh/asdfasdf a/")
matchInString("ab cd ef gh/asdfasdf a/b")
matchInString("ab cd ef 12341234 /")




答案 2 :(得分:0)

这应该适合您的具体情况,假设它是一个起点:



console.log(
  'ab cd ef gh/'.match(/(.*?)\s*(?:\w+\/)/).pop()
)