我需要做一场非贪婪的比赛,并希望有人能帮助我.我有以下内容,我使用的是JavaScript和ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
Run Code Online (Sandbox Code Playgroud)
上面的匹配匹配href标记的第一个开头.我需要它只匹配作为/pdf/文件夹一部分的最后一个href .
有任何想法吗 ?
TextGrid是Praat程序使用的"分段"文件.我想编写一个解析器,然后验证数据.我的问题是:
你会如何为这种格式编写解析器?逐行阅读还是其他什么?这是一种已知的格式吗?
File type = "ooTextFile"
Object class = "TextGrid"
xmin = 0
xmax = 93.0538775510204
tiers? <exists>
size = 3
item []:
item [1]:
class = "IntervalTier"
name = "diph"
xmin = 0
xmax = 93.0538775510204
intervals: size = 65
intervals [1]:
xmin = 0
xmax = 1.300090702947846
text = ""
intervals [2]:
xmin = 1.300090702947846
xmax = 1.5300845864661654
text = "ey_s"
intervals [3]:
xmin = 1.5300845864661654
xmax = 3.4648692624493815
text = ""
Run Code Online (Sandbox Code Playgroud)
(然后重复到EOF,间隔为[4 .... n])
我一直在使用以下网站来测试PHP正则表达式,所以我不必经常上传:http: //www.spaweditor.com/scripts/regex/index.php
我正在使用以下正则表达式:
/(.*?)\.{3}/
Run Code Online (Sandbox Code Playgroud)
在以下字符串上(替换为空):
Non-important data...important data...more important data
Run Code Online (Sandbox Code Playgroud)
和preg_replace返回:
more important data
Run Code Online (Sandbox Code Playgroud)
但我希望它能回归:
important data...more important data
Run Code Online (Sandbox Code Playgroud)
我以为?是非贪婪的修饰语.这里发生了什么?
我有一个可能很大的文本块来搜索实例[[...]],其中...可以是任何东西,包括其他括号(虽然它们不能嵌套; ]]后面的第一个实例[[结束匹配).
我可以想到两种方法来匹配这个文本:
/\[\[.+?\]\]//\[\[(?:(?!\]\]).)+\]\]/从性能的角度来看,一种选择本质上比另一种更好(我说第一种可能更具可读性)?我记得读过最好不要使用非贪婪的限定符,但我现在找不到它的来源.
码:
str = '<br><br />A<br />B'
print(re.sub(r'<br.*?>\w$', '', str))
Run Code Online (Sandbox Code Playgroud)
它应该返回<br><br />A,但它返回一个空字符串''!
有什么建议吗?
我有一个输入字符串,如"=== text ===和=== text ===",我想用相应的html标签替换wiki语法.
输入:
===text=== and ===text===
Run Code Online (Sandbox Code Playgroud)
理想输出:
<h1>text</h2> and <h1>text</h2>
Run Code Online (Sandbox Code Playgroud)
但是使用以下代码我得到了这个输出:
var regex = new Regex("---(.+)---");
var output = regex.Replace("===text=== and ===text===", "<h1>$1</h1>");
<h1>text=== and ===text</h1>
Run Code Online (Sandbox Code Playgroud)
我知道问题是我的正则表达式与贪婪相匹配.但是如何让他们不贪心.
谢谢你,亲切的问候.丹尼
我正在使用python正则表达式模块,re.
我需要在这两个短语中匹配'('')'内的任何内容,但"不那么贪心".像这样:
show the (name) of the (person)
calc the sqrt of (+ (* (2 4) 3))
Run Code Online (Sandbox Code Playgroud)
结果应该从短语1返回:
name
person
Run Code Online (Sandbox Code Playgroud)
结果应该从短语2返回:
+ (* (2 4) 3)
Run Code Online (Sandbox Code Playgroud)
问题是,为了适应第一个短语,我使用了 '\(.*?\)'
在第二个短语中,这恰好适合 + (* (2 4)
并使用'\(.*\)'正确拟合第二个短语,在第一个短语适合(name) of the (person)
什么正则表达式适用于这两个短语?
我有以下几行:
"14:48 say;0ed673079715c343281355c2a1fde843;2;laka;hello ;)"
Run Code Online (Sandbox Code Playgroud)
我使用一个简单的正则表达式解析这个:
if($line =~ /(\d+:\d+)\ssay;(.*);(.*);(.*);(.*)/) {
my($ts, $hash, $pid, $handle, $quote) = ($1, $2, $3, $4, $5);
}
Run Code Online (Sandbox Code Playgroud)
但是; 最后搞砸了,我不知道为什么.贪婪的操作员不应该处理"一切"吗?
我以为我在合理的范围内理解了Perl RE,但这令我感到困惑:
#!/usr/bin/perl
use strict;
use warnings;
my $test = "'some random string'";
if($test =~ /\'?(.*?)\'?/) {
print "Captured $1\n";
print "Matched $&";
}
else {
print "What?!!";
}
Run Code Online (Sandbox Code Playgroud)
版画
捕获的
匹配'
它似乎与"结局"相匹配,因此没有任何结果.
我本来期望它与整个事物相匹配,或者如果它完全不贪婪,什么都没有(因为一切都有可选匹配).
这种行为让我感到困惑,任何人都可以解释发生了什么?
我有一个非贪婪的正则表达式的问题.我已经看到有关于非贪婪的正则表达式的问题,但他们没有回答我的问题.
问题:我试图匹配"lol"锚点的href.
注意:我知道这可以通过perl HTML解析模块完成,而我的问题不是在perl中解析HTML.我的问题是关于正则表达式本身,HTML只是一个例子.
测试用例:我有4个测试.*?和[^"].2首先产生预期的结果.然而,第3次没有,第4次只是,但我不明白为什么.
问题:
.*?和[^"]?非贪婪的操作员不应该工作吗?.*?和[^"]?我不明白为什么包括.*在前面改变正则表达式.(除了.*前面的第3和第4次测试是相同的).我可能不明白这些正则表达式是如何工作的.一个perl食谱食谱提到了一些东西,但我不认为它回答了我的问题.
use strict;
my $content=<<EOF;
<a href="/hoh/hoh/hoh/hoh/hoh" class="hoh">hoh</a>
<a href="/foo/foo/foo/foo/foo" class="foo">foo </a>
<a href="/bar/bar/bar/bar/bar" class="bar">bar</a>
<a href="/lol/lol/lol/lol/lol" class="lol">lol</a>
<a href="/koo/koo/koo/koo/koo" class="koo">koo</a>
EOF
print "| $1 | \n\nThat's ok\n" if $content =~ m~href="(.*?)"~s ;
print "\n---------------------------------------------------\n";
print "| $1 | \n\nThat's ok\n" if $content =~ m~href="(.*?)".*>lol~s ;
print …Run Code Online (Sandbox Code Playgroud) regex ×9
regex-greedy ×9
greedy ×3
perl ×3
python ×3
parsing ×2
c# ×1
non-greedy ×1
performance ×1
php ×1
text ×1