我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。

我这样写道:

/^(.*);/

但它实际上匹配所有内容(包括分号),直到最后出现一个分号。


当前回答

这适用于从一行开始到第一个单词的内容,

/^.*?([^\s]+)/gm

其他回答

示例文本:

"this is a test sentence; to prove this regex; that is g;iven below"

例如,如果我们有上面的示例文本,正则表达式/(.*?\;)/将给出第一次出现分号(;)之前的所有内容,包括分号:"this is a test sentence;"

"/^([^\/]*)\/$/"为我工作,从数组中只获得顶部的"文件夹":

a/   <- this
a/b/
c/   <- this
c/d/
/d/e/
f/   <- this

我遇到了一个类似的问题,包括所有字符,直到单词entity_id后面的第一个逗号。Bigquery的解决方案是这样的:

SELECT regexp_extract(line_items,r'entity_id*[^,]*') 

这将只匹配每个字符串中的第一个出现,并忽略后续出现。

/^([^;]*);*/

真的有点难过,没有人给你正确的答案....

在正则表达式中,?使它非贪婪。默认情况下,regex将尽可能多地匹配(贪婪)

简单地加一个?并且它将是非贪婪的,匹配越少越好!

祝你好运,希望有帮助。