考虑以下字符串:
ab cd ef gh/
如何提取ab cd ef
?
我希望能够匹配到包含特定字符的第一个系列之前的第一个空格,在上面的例子中是/
。
编辑:我试图设置一个配置文件来解析一些日志到Logstash,所以我想知道是否可以用正则表达式规则来做这件事。
答案 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()
)