Regex 设置正则表达式的优先级

Regex 设置正则表达式的优先级,regex,Regex,我有一个正则表达式:*a | B | AB* 当我的字符串为aabccc时 此正则表达式的结果: 完全匹配0-8 AABCCC 第一组。0-4 aaaA 第2组。4-5 B 第3组。5-8 ccc 问题:我希望匹配以下结果: 完全匹配0-8 AABCCC 第一组。0-4 aaa 第2组。4-5 AB 第3组。5-8 ccc 我怎样才能改变我的正则表达式呢?请帮帮我,非常感谢 您可以使用以下正则表达式: *AB.您的问题不仅与优先级有关,而且与第一组相关。它尽可能长。 因此,即使您的备选方案也能适

我有一个正则表达式:*a | B | AB* 当我的字符串为aabccc时 此正则表达式的结果:

完全匹配0-8 AABCCC 第一组。0-4 aaaA 第2组。4-5 B 第3组。5-8 ccc

问题:我希望匹配以下结果:

完全匹配0-8 AABCCC 第一组。0-4 aaa 第2组。4-5 AB 第3组。5-8 ccc


我怎样才能改变我的正则表达式呢?请帮帮我,非常感谢

您可以使用以下正则表达式:


*AB.

您的问题不仅与优先级有关,而且与第一组相关。它尽可能长。 因此,即使您的备选方案也能适应这种情况:

(.*?)(AB|A|B)(.*)

??将量词转换为非贪婪版本:.*任何字符,贪婪变成。*?任何字符,非贪婪的

它实际上取决于您使用的数据集,也许您可以给我们提供有关它的更多信息。但现在看来我们可以使用前缀和后缀都是小写字符的事实:

\b([a-z]*)(A|B|AB)([a-z]*)\b
如果你需要的话,我们可以做更多的概括。如果A或B不能出现在第一部分或最后一部分中,则使用此选项。[^AB\n]表示mathc所有不是a或B或换行符的内容。如果您有多行数据集,则需要具有换行符的零件

\b([^AB\n]*)(A|B|AB)([^AB\n]*)\b

你能试试吗?.*AB | A | B.[A-z]+AB?*这行吗?@TheGridLock你认为OP可能也想和AAAAA匹敌吗?我想是的,尽管他们没有明确地说。A或B可以在单词的第一部分,还是第一部分由完全不同的字符组成?所以我想匹配aaaAccc或aaaBccc如果存在,我如何更改我的正则表达式?从OP使用A | B | AB的事实来看,他们希望例如aaaaaaaaa也匹配,我认为这与你的建议不符。我承认,在这个细节上并不是100%清楚的问题。我希望我的模式匹配AAAAAAAA或aaaAaaa或AAAAAAAA,但我更喜欢AAAAAAAA,AAAAAAAA,我如何修复它们?