小编And*_*ist的帖子

非贪婪的正则表达式匹配,JavaScript和ASP

我需要做一场非贪婪的比赛,并希望有人能帮助我.我有以下内容,我使用的是JavaScript和ASP

match(/\href=".*?\/pdf\/.*?\.pdf/)
Run Code Online (Sandbox Code Playgroud)

上面的匹配匹配href标记的第一个开头.我需要它只匹配作为/pdf/文件夹一部分的最后一个href .

有任何想法吗 ?

regex regex-greedy

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

如何解析这种格式(Praat TextGrid)

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])

python parsing text

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

PHP preg_replace非贪婪的麻烦

我一直在使用以下网站来测试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)

我以为?是非贪婪的修饰语.这里发生了什么?

php regex regex-greedy

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

使用非贪婪的限定词或前瞻是否更好?

我有一个可能很大的文本块来搜索实例[[...]],其中...可以是任何东西,包括其他括号(虽然它们不能嵌套; ]]后面的第一个实例[[结束匹配).

我可以想到两种方法来匹配这个文本:

  • 使用非贪婪的限定符: /\[\[.+?\]\]/
  • 使用前瞻: /\[\[(?:(?!\]\]).)+\]\]/

从性能的角度来看,一种选择本质上比另一种更好(我说第一种可能更具可读性)?我记得读过最好不要使用非贪婪的限定符,但我现在找不到它的来源.

regex performance regex-greedy

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

Python re.sub使用非贪婪模式(.*?)和字符串结尾($)它变得贪婪!

码:

str = '<br><br />A<br />B'
print(re.sub(r'<br.*?>\w$', '', str))
Run Code Online (Sandbox Code Playgroud)

它应该返回<br><br />A,但它返回一个空字符串''!

有什么建议吗?

python regex regex-greedy

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

正则表达式贪心问题(C#)

我有一个输入字符串,如"=== 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)

我知道问题是我的正则表达式与贪婪相匹配.但是如何让他们不贪心.

谢谢你,亲切的问候.丹尼

c# regex greedy regex-greedy

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

正则表达式:匹配括号贪婪和非贪婪

我正在使用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)

什么正则表达式适用于这两个短语?

python regex regex-greedy

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

如何修复我的正则表达式与贪婪的量词不匹配?

我有以下几行:

"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)

但是; 最后搞砸了,我不知道为什么.贪婪的操作员不应该处理"一切"吗?

regex perl parsing greedy regex-greedy

4
推荐指数
3
解决办法
6595
查看次数

为什么我的非贪婪Perl正则表达式什么都不匹配?

我以为我在合理的范围内理解了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)

版画

捕获的
匹配'

它似乎与"结局"相匹配,因此没有任何结果.
我本来期望它与整个事物相匹配,或者如果它完全不贪婪,什么都没有(因为一切都有可选匹配).
这种行为让我感到困惑,任何人都可以解释发生了什么?

regex perl greedy regex-greedy

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

perl非贪心的问题

我有一个非贪婪的正则表达式的问题.我已经看到有关于非贪婪的正则表达式的问题,但他们没有回答我的问题.

问题:我试图匹配"lol"锚点的href.

注意:我知道这可以通过perl HTML解析模块完成,而我的问题不是在perl中解析HTML.我的问题是关于正则表达式本身,HTML只是一个例子.

测试用例:我有4个测试.*?[^"].2首先产生预期的结果.然而,第3次没有,第4次只是,但我不明白为什么.

问题:

  1. 为什么没有第三测试中都试验失败.*?[^"]?非贪婪的操作员不应该工作吗?
  2. 为什么第四次测试适用于.*?[^"]?我不明白为什么包括.*在前面改变正则表达式.(除了.*前面的第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 perl non-greedy regex-greedy

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

标签 统计

regex ×9

regex-greedy ×9

greedy ×3

perl ×3

python ×3

parsing ×2

c# ×1

non-greedy ×1

performance ×1

php ×1

text ×1