相关疑难解决方法(0)

正则表达式在第一场比赛时停止

我的正则表达式看起来像

<xxxx location="file path/level1/level2" xxxx some="xxx">
Run Code Online (Sandbox Code Playgroud)

我只对分配给位置的报价部分感兴趣.如果没有贪婪的开关,它不应该像下面那么容易吗?

/.*location="(.*)".*/
Run Code Online (Sandbox Code Playgroud)

似乎没有用.

regex

489
推荐指数
6
解决办法
54万
查看次数

RegExp - 如何匹配尽可能短的数量?

我有我的正则表达式/'(.*)(?:(?:'\s*,\s*)|(?:'\)))/
和我的测试代码('He said, "You're cool."' , 'Rawr')
(我的测试代码模拟传递给函数的参数.)

我将解释我的正则表达式,因为我理解它,并希望你们中的一些人可以解释我的问题.

1)/'意味着在匹配字符串的开头,需要有'

2)(.*)意味着捕获任何字符,除了\n0次或更多次

3)(?:(?:4)|(?:5))意味着不捕获但尝试执行步骤4,如果它不起作用,请尝试步骤5

4 )(?:'\s*,\s*)意味着不捕获,但需要有一个'0或更多的空白字符后跟一个,0或更多的空格字符

5)(?:'\))意味着不捕获但需要有')

所以它似乎应该返回这个(和是我想要的):
'+ He said, "You're cool."+ ' ,
但它返回:
'+ He said, "You're cool."' , 'Rawr+ ')

如果我将我的测试代码改为('He said, "You're cool."' , 'Rawr'(没有结束括号)它返回我想要的东西,但是一旦我添加了最后一个括号,那么我的OR运算符似乎是不管它想要什么.我希望它首先测试是否有逗号,如果有一个逗号则在那里打破,如果没有一个括号检查.

我已经尝试切换步骤4和步骤5的点,但是OR运算符似乎总是默认为(?:'\))侧面. 我怎样才能匹配尽可能短的数量?

javascript regex or-operator

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

我的正则表达式太匹配了.我怎么能告诉它匹配最小的模式?

我有这个RegEx:

('.+')
Run Code Online (Sandbox Code Playgroud)

它必须匹配像C中的字符文字.例如,如果我有'a' b 'a'它应该匹配a和'它们周围的.

然而,它也匹配b也(它不应该),可能是因为它严格来说也是在它之间'.

以下是它出错的截图(我使用它来进行语法突出显示):
截图

我对正则表达式很新.我怎么能告诉正则表达式不匹配呢?

regex

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

正则表达式替换所有出现的事件

我需要替换一个字符串,它跟在一个特定的字符串和一些不同的数据之后.我需要保持开头和中间,只需更换结束.当我尝试下面的代码时,它只替换最后一次出现.我试过切换到一个非贪婪的比赛,但后来却找不到它.中间可以包含新的行,空格,字母和数字.

String s = "Beginning of story. Keep this sentence. Old ending.\n";
s += s;
s += s;
s1 = Regex.Replace(s, @"Beginning of story. ([\s\S]*) Old ending.", "Beginning of story. " + @"$1" + " New ending.", RegexOptions.Multiline | RegexOptions.IgnoreCase);

The result is this:
Beginning of story. Keep this sentence. Old ending.
Beginning of story. Keep this sentence. Old ending.
Beginning of story. Keep this sentence. Old ending.
Beginning of story. Keep this sentence. New ending.
Run Code Online (Sandbox Code Playgroud)

如何取代每次出现的"旧结局".

.net c#

7
推荐指数
2
解决办法
3万
查看次数

如何在C#中进行"最小匹配"正则表达式搜索?

假设我有一个这样的多行字符串:

STARTFRUIT
banana
ENDFRUIT

STARTFRUIT
avocado
ENDFRUIT

STARTVEGGIE
rhubarb
ENDVEGGIE

STARTFRUIT
lime
ENDFRUIT
Run Code Online (Sandbox Code Playgroud)

我想搜寻所有水果,没有蔬菜.我试试这个:

MatchCollection myMatches = Regex.Matches(tbBlob.Text, "STARTFRUIT.*ENDFRUIT", RegexOptions.Singleline);

foreach (var myMatch in myMatches)
{
    Forms.MessageBox.Show(String.Format("Match: {0}", myMatch), "Match", Forms.MessageBoxButtons.OK, Forms.MessageBoxIcon.Information);
}
Run Code Online (Sandbox Code Playgroud)

问题是,它给了我一个包含第一个STARTFRUIT和开头以及最后一个ENDFRUIT的大匹配,而不是给我一个三个匹配的数组.有没有办法"最小化"匹配搜索?我没有看到任何帮助RegexOptions.

c# regex

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

是否可以在使用贪婪字符时重新找到最小匹配

免责声明:我不是正则表达专家.

我正在使用Python re模块在许多htm文件上执行正则表达式匹配.其中一种模式是这样的:

<bla><blabla>87765.*</blabla><bla>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,不是找到所有(比如说)五次出现的模式,而是只找到一个.因为它将所有出现的事件焊接成一个,使用<bla><blabla>87765第一次出现的</blabla><bla>部分和页面中最后一次出现的部分.

有没有办法告诉重新找到最小的比赛?

python regex

5
推荐指数
2
解决办法
9162
查看次数

正则表达式:匹配单词的第一个匹配项

出什么问题了 :

/(?<={).+(?=public)/s
Run Code Online (Sandbox Code Playgroud)

全文

class WeightConvertor {

private:
    double gram;
    double Kilogram;
    double Tonnes;
    void SetGram(double);
    void SetKiloGram(double);
    void SetTonnes(double);
matching end

public:
    WeightConvertor();
    WeightConvertor(double, double, double);
    ~WeightConvertor();
    void SetWeight(double, double, double);
    void GetWeight(double&, double& ,double&);
    void PrintWeight();
    double TotalWeightInGram();

public:

};
Run Code Online (Sandbox Code Playgroud)

我怎么能只匹配这个文字:

private:
    double gram;
    double Kilogram;
    double Tonnes;
    void SetGram(double);
    void SetKiloGram(double);
    void SetTonnes(double);
matching end
Run Code Online (Sandbox Code Playgroud)

regex

5
推荐指数
2
解决办法
2万
查看次数

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

我有以下几行:

"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
查看次数

RegEx - 在第一场比赛后停止

我们正在使用这个正则表达式来过滤主题中的票号。

这是我们使用的正则表达式: \\[\\#(.*)\\]

主题通常是这样的: "[#20160708-0020] Hello blah blah"

正则表达式得到我们"20160708-0020",我们可以进一步使用它。

公司里有人开始写这样的邮件: "[#20160708-0020] Hello [SQL] blah blah"

所以正则表达式会让我们知道"20160708-0020] Hello [SQL"这显然是不正确的。

有没有办法告诉正则表达式在第一场比赛后停止?谢谢!:)

regex otrs

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

如何匹配第一组出现与正则表达式?

示例:https://regex101.com/r/n4x91E/1

输入字符串:

"我认为我们必须向某个人指出某些事情,并在此之后向他提出其他一些事情"

我的常规表达:

(point).*(out)
Run Code Online (Sandbox Code Playgroud)

返回错误的结果:

"我认为我们也必须point certain things out to this man, and after that point some other things out对他"

预期结果:

"我认为我们必须point certain things out对这个人,在那之后还有其他一些东西给他"

如何更改我的正则表达式以获得第一组?

java regex

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

标签 统计

regex ×9

c# ×2

.net ×1

greedy ×1

java ×1

javascript ×1

or-operator ×1

otrs ×1

parsing ×1

perl ×1

python ×1

regex-greedy ×1