Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找以相同大写字符开头和结尾的子字符串_Python_Regex_Regex Lookarounds_Regex Group_Regex Greedy - Fatal编程技术网

Python 查找以相同大写字符开头和结尾的子字符串

Python 查找以相同大写字符开头和结尾的子字符串,python,regex,regex-lookarounds,regex-group,regex-greedy,Python,Regex,Regex Lookarounds,Regex Group,Regex Greedy,我有一个家庭作业问题,我需要使用正则表达式来解析大字符串中的子字符串 目标是选择与以下参数匹配的子字符串: 子字符串以相同的大写字符开始和结束,我需要忽略前面有数字0的大写字符的任何实例 例如,ZAp0ZuZAuX0AZA将包含匹配的ZAp0ZuZ和AuX0AZA 我已经和这件事混了几个小时了,老实说,我还没有接近它 我尝试过下面的代码,但这会选择从第一个大写字母到最后一个大写字母的所有内容。我也 [A-Z]{1}[:alnum:]*[A-Z]{1}您可以使用 (?<!0)([A-Z]).

我有一个家庭作业问题,我需要使用正则表达式来解析大字符串中的子字符串

目标是选择与以下参数匹配的子字符串:

子字符串以相同的大写字符开始和结束,我需要忽略前面有数字0的大写字符的任何实例

例如,ZAp0ZuZAuX0AZA将包含匹配的ZAp0ZuZ和AuX0AZA

我已经和这件事混了几个小时了,老实说,我还没有接近它

我尝试过下面的代码,但这会选择从第一个大写字母到最后一个大写字母的所有内容。我也

[A-Z]{1}[:alnum:]*[A-Z]{1}您可以使用

(?<!0)([A-Z]).*?(?<!0)\1

使用正则表达式可能不是最好的方法,因为您可以简单地拆分它们。但是,如果您有/希望这样做,可能会让您了解在字符列表展开时可能面临的问题:

(?=.[A-Z])([A-Z])(.*?)\1
我添加了?=[A-Z],它必须包含一个大写字母。你可以删除它,它会工作。但是,为了安全起见,可以将这些边界添加到表达式中

JavaScript测试 常量regex=/[A-Z].*1/gm; const str=`ZAp0ZuZAuX0AZA ZAPXXZUZAUXXAFAZA ZApxaf09xZuZAuX090xafaAZA abcZApxaf09xZuZAuX090xafaAZA`; 让m; 而m=regex.execstr!==空的{ //这是避免具有零宽度匹配的无限循环所必需的 如果m.index==regex.lastIndex{ regex.lastIndex++; } //可以通过'm`-变量访问结果。 m、 forEachmatch,groupIndex=>{ log`find match,group${groupIndex}:${match}`; }; } 这可能有用

?

解释

 (?<! 0 )      # Ignore Upper case with zero in front of it
 ( [A-Z] )     # (1), This Upper case is to be found down stream
 .*?           # Lazy, any character
 (?<! 0 )      # Ignore Upper case with zero in front of it
 \1            # Backref to what is in group (1)

你好您是否愿意分享您的任何程度的尝试?通过这种方式,我们可以确保我们不会为你从火中拔出栗子。我不确定你在做什么,但这不是python。Python字符类的编写方式不同。@MegaIng[:alnum:]受PyPi正则表达式模块的支持,但Ryan没有提供任何正则表达式库的详细信息。@WiktorStribiżew我不知道。谢谢Ryan,请检查我的答案,如果你需要更多指导,请告诉我。
 (?<! 0 )      # Ignore Upper case with zero in front of it
 ( [A-Z] )     # (1), This Upper case is to be found down stream
 .*?           # Lazy, any character
 (?<! 0 )      # Ignore Upper case with zero in front of it
 \1            # Backref to what is in group (1)