我正在查看一些旧的代码库,并且遇到了两个正则表达式部分,我认为它们在语义上是相同的.想知道Stackoverflow社区可以证实我的理解.
RegEx 1 :(.+?) - 一个或多个字符,但可选
RegEx 2:(.*) - 零个或多个字符
我一直在考虑不同的场景,但不能想到任何两个表达式都不相同的输入.
字符串:XXaaaXXbbbXXcccXXdddOO
我想匹配以 'XX' 开头并以 'OO' 结尾的最小字符串。
所以我写了非贪婪的reg:r'XX.*?OO'
>>> str = 'XXaaaXXbbbXXcccXXdddOO'
>>> re.findall(r'XX.*?OO', str)
['XXaaaXXbbbXXcccXXdddOO']
Run Code Online (Sandbox Code Playgroud)
我以为它会返回['XXdddOO']但它太“贪婪”了。
然后我知道我一定是弄错了,因为上面的限定符将首先匹配 'XX' 然后显示它是 'non-greedy'。
但我仍然想弄清楚如何直接得到我的结果['XXdddOO']。任何答复表示赞赏。
到目前为止,关键点实际上不是关于 non-greedy ,或者换句话说,它是关于我眼中的 non-greedy:它应该在左限定符(XX?和右限定符()之间匹配尽可能少的字符。 OO).当然事实是字符串是从左到右处理的。
我正在使用匹配表达式https://([^/]*)/(.*)并将表达式替换为constantprefix/$ 2并尝试通过向所有URL添加"/ constantprefix"来重写传入的URL
对于以下网址,它按预期工作:
我对已经以/ constantprefix开头的URL有问题,我在输出URL中看到两个/ constantprefix/constantprefix,我不想找,有什么办法可以避免吗?
如果传入的URL是https://hostname/constantprefix/login/index.aspx,那么输出的URL将变为https://hostname/constantprefix/constantprefix/login/index.aspx 我可以知道如何从匹配中避免/ constantprefix/constantprefix表达?
Text = "<a> text </a> <c> code </c>"
Run Code Online (Sandbox Code Playgroud)
我想删除<c> code </c> python 中的语句
output = "<a> text </a>"
Run Code Online (Sandbox Code Playgroud) 我试图解决.在最后只有一个字符串中。例如,
line = "python...is...fun..."
Run Code Online (Sandbox Code Playgroud)
我有\.*$Ruby 中的正则表达式,它将被替换为单个.,就像在这个演示中一样,它似乎没有按预期工作。我搜索过类似的帖子,我得到的最接近的是Python 中的这个答案,它暗示了以下内容,
>>> text1 = 'python...is...fun...'
>>> new_text = re.sub(r"\.+$", ".", text1)
>>> 'python...is...fun.'
Run Code Online (Sandbox Code Playgroud)
但是,如果我.最后没有,它就会失败。所以,我已经试过像\b\.*$,因为在这里看到,但这未能对具有一定第三测试?在结束的。
我的问题是,为什么\.*$不匹配所有.的(尽管很贪婪)以及如何正确地解决问题?
预期输出:
python...is...fun.
python...is...fun.
python...is...fun??.
Run Code Online (Sandbox Code Playgroud) 我注意到Regex用3000行完成XML文件的速度很慢[1]:
\(<Annotation\(\s*\w\+="[^"]\{-}"\s\{-}\)*>\)\@<=\(\(<\/Annotation\)\@!\_.\)\{-}"MATCH\_.\{-}\(<\/Annotation>\)\@=
Run Code Online (Sandbox Code Playgroud)
我一直以为Regexes很有效率.为什么完成正则表达式需要这么长时间?
[1] 如何在VIM中重复匹配A到B?
名单a = ['Aeroplane','Ramanujan','World-king','Pizza/Burger']
我想替换的项目(有-,/与列表中)Pizza_Burger和World_king.无论符号是什么,都应该用下划线代替.
这是我的代码:
import re
def replaceStrings(arg):
txt =arg
res = re.search(r'(?i)\b([a-z][a-z0-9_]*)([/-]+)([a-z][a-z0-9_]*)\b', txt)
if res:
pp = reg.sub(r'\1_\2',txt)
print(pp)
return pp
for i in a:
replaceStrings(i)
Run Code Online (Sandbox Code Playgroud)
但我没有得到所需的输出.我的正则表达式有什么问题.我是正则表达式的初学者.谢谢
我有一个姓氏和名字同时出现的名字列表:
BorisovaSvetlana A.; KimHak Joong; PuXiaotao; LiuHung-wen*
Run Code Online (Sandbox Code Playgroud)
我想在姓和名之间添加一个逗号和空格,以使输出为:
Borisova, Svetlana A.; Kim, Hak Joong; Pu, Xiaotao; Liu, Hung-wen*
Run Code Online (Sandbox Code Playgroud)
我在KNIME中使用一个String Manipulation节点,并且我想regexReplace($col1$, ,"")会使用它,也许使用[az]和[AZ]进行某种先行查找以直接在大写字母后写一个小写字母,但是我对regex不熟悉到目前为止,这就是我所拥有的。
我该如何解决这个问题?
我有包含yaml文件的下一个目录路径:
test/1.yaml
test/dev.yaml
test/dev0_r.yaml
Run Code Online (Sandbox Code Playgroud)
等等
如何匹配完全在test /目录中但不在子目录(如test / test1 / dev.yaml)中的所有Yaml文件
我正在尝试使用globing:
test/*.yaml
Run Code Online (Sandbox Code Playgroud)
但在https://regex101.com/上不起作用
我该如何实现?
我正在尝试使用正则表达式生成一组捕获组,但是捕获组没有捕获我期望的字符串。
我的输入类似于以下常规格式:
S2244060800027008209302B000A667A6201A6828E1976007A000A52820009A3420009B0FE1F
Run Code Online (Sandbox Code Playgroud)
该字符串具有以下组成部分:4个字符的前缀,3个字节的地址,一系列2字节的数据块,1个字节的行终止符。
我只关心地址和数据块。
我尝试使用的正则表达式是:
/\w{4}(\w{6})(\w{4})+/;
(在执行正则表达式之前,我有一个使用子字符串解析输入的精巧解决方案,但我讨厌它……)
原始的非功能代码如下:
open IN, "<$ARGV[0]" or die "Could not open '$ARGV[0]': $!\n";
open OUT, ">$ARGV[0].txt" or die "Could not open '$ARGV[0].txt': $!\n";
while (<IN>)
{
print OUT join(" ",/^\w{4}(\w{6})(\w{4})+/)."\n";
}
close IN;
close OUT;
Run Code Online (Sandbox Code Playgroud)
我想要的输出是一个包含以下元素的数组:
@array = [406080, 0027, 0082, 0930, 2B00, 0A66, 7A62, 01A6, 828E, 1976, 007A, 000A, 5282, 0009, A342, 0009, B0FE]
Run Code Online (Sandbox Code Playgroud)
但是前面的正则表达式会导致一个仅包含3个字节地址和最后一个数据块的两个元素数组:
@array = [406080, B0FE]
Run Code Online (Sandbox Code Playgroud)
对我而言,这意味着我对正则表达式捕获组的工作方式有一个基本的误解,我想澄清一下。
仅出于完整性考虑,这是我糟糕的解决方法:
open IN, "<$ARGV[0]" or die "Could not open '$ARGV[0]': $!\n";
open OUT, …Run Code Online (Sandbox Code Playgroud) regex ×10
regex-greedy ×10
python ×4
regex-group ×4
string ×3
greedy ×1
knime ×1
non-greedy ×1
pcre ×1
perl ×1
ruby ×1
substitution ×1
urlrewriter ×1