带有特殊字符的字母数字字的正则表达式

2024-10-04 03:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用正则表达式捕获带有特殊字符的字母数字单词。 搜索将在最多4-5个单词的小字符串上完成,并应提取一个单词。 目标字符串可以位于字符串中的任何位置,但将用空格分隔

例如:

"Bill No: THRD/20-21/110"
"CRN No: GSTASP/20-21/066"
"Identifier value: PCPL-2021-000152"

需要得到这些值

THRD/20-21/110
GSTASP/20-21/066
PCPL-2021-000152

特殊字符仅限于“/”—— .到目前为止,我所有的方法都失败了


Tags: no字符串目标value字母数字单词空格
1条回答
网友
1楼 · 发布于 2024-10-04 03:29:26

您可以使用前瞻来限定下一个非空间子字符串中包含/-

(?<=[ \t])(?=[^ \t]*[/-])([0-9a-zA-Z/-]+)

Demo

这只适用于[ \t]后面的子字符串,从字面上看,您的语句目标字符串可以位于字符串中的任何位置,但始终由空格分隔


如果要在字符串的开头捕获,请删除lookback:

(?=[^ \t]*[/-])([0-9a-zA-Z/-]+)

Demo 2

这将捕获具有定义的字符集且其中至少有一个[/-]的任何子字符串(以使用[ \t]分隔符作为锚定符的效率为代价…)

注意:如果在字符类中使用-作为文字字符,则需要对其进行转义或将其放在类的末尾。否则,-将在字符类中定义一个范围。这是一个偷偷摸摸的bug,当正则表达式试图捕获一个文本-时,它咬了很多人

相关问题 更多 >