我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
当前回答
这将只匹配每个字符串中的第一个出现,并忽略后续出现。
/^([^;]*);*/
其他回答
会;
/^(.*?);/
工作吗?
的吗?是惰性操作符,因此正则表达式在匹配;之前抓取尽可能少的内容。
示例文本:
"this is a test sentence; to prove this regex; that is g;iven below"
例如,如果我们有上面的示例文本,正则表达式/(.*?\;)/将给出第一次出现分号(;)之前的所有内容,包括分号:"this is a test sentence;"
我遇到了一个类似的问题,包括所有字符,直到单词entity_id后面的第一个逗号。Bigquery的解决方案是这样的:
SELECT regexp_extract(line_items,r'entity_id*[^,]*')
这些建议的答案对我都不起作用。(例如在notepad++中) 但
^.*?(?=\;)
did.
/ ^ ^; * /
[^;]表示匹配除分号以外的任何内容。方括号是集合匹配操作符,本质上是,匹配这个字符集中的任何字符,开头的^使它成为逆匹配,所以匹配这个字符集之外的任何字符。