标签: regex-lookarounds

BigQuery - 正则表达式在已知字符串之后匹配模式(积极的后向替代)

我需要提取已知字符串后的 8 位数字:

| MyString                     | Extract: | 
| ---------------------------- | -------- | 
| mypasswordis 12345678        | 12345678 | 
| # mypasswordis 12345678      | 12345678 | 
| foobar mypasswordis 12345678 | 12345678 |
Run Code Online (Sandbox Code Playgroud)

我可以使用正则表达式来做到这一点,例如:

(?<=mypasswordis.*)[0-9]{8})
Run Code Online (Sandbox Code Playgroud)

但是,当我想在 BigQuery 中使用REGEXP_EXTRACT命令执行此操作时,收到错误消息“无法解析正则表达式:无效的 perl 运算符:(?<”。

我搜索了re2 库,发现似乎没有与积极向后查找等效的东西。

有什么办法可以使用其他方法来做到这一点吗?就像是

SELECT REGEXP_EXTRACT(MyString, r"(?<=mypasswordis.*)[0-9]{8}"))
Run Code Online (Sandbox Code Playgroud)

regex sql re2 google-bigquery regex-lookarounds

2
推荐指数
1
解决办法
7123
查看次数

使用正则表达式提取数据框中括号或数字之前的前导子字符串

我正在寻找一种解决方案来提取没有其他名称或数字的名称。

我的目标是将不在括号中、不带空格和数字的子字符串提取到新列中。

例如:

String                            New string
 Bolivia (Plurinational State of)  Bolivia
 United States of America20        United States of America
Run Code Online (Sandbox Code Playgroud)

数据如下:

**Country**                               **Energy Supply** 
Antigua and Barbuda                           8000000   
Bolivia (Plurinational State of)              50000
Iran (Islamic Republic of)                    20000  
Sint Maarten (Dutch part)                     58000
United States of America20                    65000
China, Macao Special AdministrativeRegion4    52000
.....more cases....                        ....more cases....
Run Code Online (Sandbox Code Playgroud)

我的代码如下所示:

df['newcontry']=df['Country'].str.extract(r'(\w*\s)')
Run Code Online (Sandbox Code Playgroud)

并返回类似这样的内容:

**Country**                               **Energy Supply**   newcontry
    Antigua and Barbuda                           8000000      Antigua
    Bolivia (Plurinational State of)              50000        Bolivia
    Iran (Islamic Republic of)                    20000        Iran …
Run Code Online (Sandbox Code Playgroud)

python pandas regex-lookarounds

2
推荐指数
1
解决办法
685
查看次数

仅用逗号分割字符串,不留空格

我们建议我有以下字符串:
let cssValue = '20px, 40px'

我希望在分割后得到以下数组:
cssValue.split(regex); // ['20px', '40px']

但是如果字符串不包含逗号(仅空格,即20px 40px),结果应该是['20px 40px']

我的正则表达式[^a-zA-Z0-9]+不考虑逗号。['20px', '40px']使用这个正则表达式,无论字符串是否包含逗号,我都会得到结果。我该如何解决?

javascript regex regex-lookarounds

2
推荐指数
1
解决办法
850
查看次数

前瞻的困惑

好吧,我从正则表达食谱中得到了这个例子

^(?=.{3}$).*
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式用于限制任意模式的长度

如果我再次测试'aaabbb',它就完全失败了

从我的理解,它寻找任何字符前面的任何字符3的长度.它应该匹配'bbb'但它不

还有一个问题,应该看看后面跟着这个模式x(?= x)

regex regex-lookarounds

1
推荐指数
1
解决办法
992
查看次数

正则表达式积极前瞻

为什么这个积极的前瞻与粗体文本不匹配?(不是.而不是 - >)

[_a-z0-9]+(?=\.|->)[_a-z0-9]+
Run Code Online (Sandbox Code Playgroud)
提示6.ai_flags = 0; // comment hints.ai_flags
hints6.ai_family = AF_UNSPEC;
int newsocket = socket(结果 - > ai_family,结果 - > ai_socktype,结果 - > ai_protocol);

regex perl posix regex-lookarounds

1
推荐指数
1
解决办法
533
查看次数

消极的向前看

考虑两种printk函数调用 -

TRACE_BR(TRACE ,    "END. rc = %d\n", rc );

TRACE_BR(TRACE, "Value = %s", string );
Run Code Online (Sandbox Code Playgroud)

我正在编写一个正则表达式来匹配像上面这样的函数调用,它们%内部包含字符串参数,但如果字符串END也在里面则不应该匹配.

我用这样的负面预测

TRACE_BR\(TRACE.*?(?!END)%.*
Run Code Online (Sandbox Code Playgroud)

我希望这个正则表达式只匹配第二个函数调用,但它也匹配第一个函数调用.

我猜我在贪婪的地方出错了*.

regex negative-lookahead regex-lookarounds

1
推荐指数
1
解决办法
341
查看次数

正则表达式仅查找第一个匹配项

我有这样的文字: -

SOME text, .....
Number of successes: 3556
Number of failures: 22
Some text, .....
Number of successes: 2623
Number of failure: 0
Run Code Online (Sandbox Code Playgroud)

我的要求是找到这种模式的第一次出现"成功次数:(\ d +)",这是成功次数:3556.但是上面的表达式也会返回后续匹配.

我希望正则表达式为我做这个,不像在java中我可以使用循环来迭代.

任何人都可以帮我一个只能找到第一次出现的正则表达式.

regex search text-search regex-greedy regex-lookarounds

1
推荐指数
1
解决办法
9793
查看次数

如何更改除两个之外的所有字符?

我们假设我们有一个字符串:

a = "I would like to go to dinner."
Run Code Online (Sandbox Code Playgroud)

很容易将字符串中的所有内容i和内容更改o-.如果我们定义:

b = re.sub("i|o","-", a, flags = re.I)
Run Code Online (Sandbox Code Playgroud)

我们得到:

b = "- w-uld l-ke t- g- t- d-nner."
Run Code Online (Sandbox Code Playgroud)

但我不知道如何得到:

"I -o--- -i-- -o -o -o -i-----"
Run Code Online (Sandbox Code Playgroud)

在使用RE模块优雅的方式(注意,最后-b通过替换点获得).有人可以写

c = ""
for char in a:
    c += char if char.lower() in "io" else "-"
Run Code Online (Sandbox Code Playgroud)

但是我想用RE来做这件事.我试着写一些类似的东西

c =  re.sub('(?!i|o)', a, flags = re.I)
Run Code Online (Sandbox Code Playgroud)

但结果是

"I- -wo-u-l-d- -li-k-e- -to- -go- -to- -di-n-n-e-r-.-"
Run Code Online (Sandbox Code Playgroud)

而且我不知道为什么.显然,我不明白是如何 …

python regex python-3.x regex-lookarounds

1
推荐指数
1
解决办法
71
查看次数

Powershell中正则表达式的等效于\ K是多少?

我在regex101上创建了一个正常表达式,它按预期工作,但问题是在Powershell中一个部分显然无效; 这个\K.

本质上,我正在寻找一个字符串的实例,并在字符串的实例后返回整个单词.所以这是一个例子:

\btest\s+\K\S+
Run Code Online (Sandbox Code Playgroud)

这会查找单词的每个示例test并返回单词后面的单词.我确实尝试过使用Lookaheads和Lookbehinds进行实验,而其中一些确实有效,但它们仍然要么返回,test要么还有其他不必要的字符.

有没有办法\K在powershell中复制?或者甚至更好,任何允许PowerShell使用的附加组件\K

regex powershell regex-lookarounds

1
推荐指数
1
解决办法
456
查看次数

RegEx用于删除字符串中的空格

试图制作一个非常简单的HTML缩小器,仅消除标记之间的空白吗?

我认为最好的方法是使用JavaScript正则表达式?但永远无法找出正确的方法。

<p>leave white spaces</p> <p>leave white spaces</p>
Run Code Online (Sandbox Code Playgroud)

缩小后:

 <p>leave white space</p><p>leave white space</p>
Run Code Online (Sandbox Code Playgroud)

试图瞄准>这里的空间<

javascript regex dom regex-group regex-lookarounds

1
推荐指数
1
解决办法
36
查看次数