我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
当前回答
这不是一个正则表达式解决方案,而是对您的问题描述足够简单的解决方案。只需分割字符串并从数组中获取第一项。
$str = "match everything until first ; blah ; blah end ";
$s = explode(";",$str,2);
print $s[0];
输出
$ php test.php
match everything until first
其他回答
会;
/^(.*?);/
工作吗?
的吗?是惰性操作符,因此正则表达式在匹配;之前抓取尽可能少的内容。
尝试/ [^;]* /
这是一个否定字符类。
我遇到了一个类似的问题,包括所有字符,直到单词entity_id后面的第一个逗号。Bigquery的解决方案是这样的:
SELECT regexp_extract(line_items,r'entity_id*[^,]*')
这适用于从一行开始到第一个单词的内容,
/^.*?([^\s]+)/gm
"/^([^\/]*)\/$/"为我工作,从数组中只获得顶部的"文件夹":
a/ <- this
a/b/
c/ <- this
c/d/
/d/e/
f/ <- this