我正在尝试公式化一个正则表达式来从下面两个字符串示例中获取ID:1./药品/2/药品-19904 -5106/氧化镁片/详细信息1./药物/2/药物-19906/氧化镁片/详细信息在第一种情况下,我应该得到19904-5106,在第二种情况下,我应该得到19906。到目前为止,我尝试了几个,我可以得到的关闭是[drugs/2/drug]-.*\d,但会返回g-19904-5106和g-19907。请帮助获得乘坐的“g-"?提前感谢您。
lxkprmvk1#
编写正则表达式时,请考虑您看到的模式,以便正确对齐表达式。例如,如果您知道所需的ID始终以类似ABCD-1234 - 5678的形式出现,其中1234-5678是所需的ID,则可以使用该ID。如果您还知道ID始终是数字,则可以进一步细化搜索对于您的示例,使用如下正则表达式字符串
.+?-(\d+(?:-\d+)*)
应该可以做到这一点。在一个python脚本中,它看起来像下面这样:
match = re.search(r'.+?-(\d+(?:-\d+)*)', my_string) if match: my_id = match.group(1)
这种模式可能会因示例的深度和复杂性而异,但这对您提供的两个示例都有效
oxiaedzo2#
这是我能找到的最接近的:\d +|.\d +-.\d +
2条答案
按热度按时间lxkprmvk1#
编写正则表达式时,请考虑您看到的模式,以便正确对齐表达式。例如,如果您知道所需的ID始终以类似ABCD-1234 - 5678的形式出现,其中1234-5678是所需的ID,则可以使用该ID。如果您还知道ID始终是数字,则可以进一步细化搜索
对于您的示例,使用如下正则表达式字符串
应该可以做到这一点。在一个python脚本中,它看起来像下面这样:
这种模式可能会因示例的深度和复杂性而异,但这对您提供的两个示例都有效
oxiaedzo2#
这是我能找到的最接近的:\d +|.\d +-.\d +