如何从python Regex中的给定字符串中提取特定长度的字符
您好我有记录,
例如:
这里我需要提取NEG作为我在python中编写正则表达式,如
`uRegDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
我的第一个“NEG”之后便携性是我应该得到的价值。第一个和第二个记录给出正确的输出为“NEG”。但在我的第三张唱片中,我得到的是“NEG NEG”,这是一个错误的值。
我还需要获得第三个记录的“NEG”。我应该给出前三个字符的长度只取“NEG”。 如果是这样,请告诉我如何根据这个来编写正则表达式?
答案 0 :(得分:0)
.
表示任何字符,+
符号表示“至少一个”,但未指定上限。您需要\w{n}
,其中\w
表示字符,n
表示出现次数。
另请注意,\w
包含算术数字,因此如果您只想要字母,最好使用[a-zA-Z]{3}
答案 1 :(得分:0)
如果您必须在Portability
使用后立即提取任何 3个字符
re.findall(r"Portability(.{3}).*?Ratio", s)
请参阅regex demo
如果这些是大写字母,请将.{3}
替换为[A-Z]{3}
。
<强>详情:
Portability
- 文字字符序列(.{3})
- 捕获第1组:正好3个字符(如果未使用re.S
/ re.DOTALL
修饰符,则除了换行符之外的任何字符),因为{3}
是一个限制量词匹配{...}
.*?Ratio
- 除了换行符之外的任何0 +字符尽可能少(因为*?
是一个惰性量词)直到第一个Ratio
子字符串。 re.findall
仅返回捕获的值,因此您只能获得NEG
。