Regex 与环视相关的正则表达式
设计一个正则表达式来提取子字符串的前两位数字,其中:Regex 与环视相关的正则表达式,regex,regex-lookarounds,Regex,Regex Lookarounds,设计一个正则表达式来提取子字符串的前两位数字,其中: 以字母结尾 从2开始 因此,从“234b342d3”,匹配结果应该是: 23(来自234b) 2d(来自2d) 我的近似答案是“(?=1.*)[a-zA-Z]”,但看起来好像不起作用 非常感谢您的每一个回复。我想您的意思是(?=2.*)。 (?=2.*)表示下一个字符是2,后跟一个或多个任意字符。但是,正则表达式说下一个字符必须是[a-zA-Z],因此任何字符都不会匹配(因为一个字符不能同时是2和[a-zA-Z]) 仅仅删除前瞻(2.*[a-
“234b342d3”
,匹配结果应该是:23
(来自234b
)2d
(来自2d
)
我的近似答案是“(?=1.*)[a-zA-Z]”
,但看起来好像不起作用
非常感谢您的每一个回复。我想您的意思是
(?=2.*)。
(?=2.*)
表示下一个字符是2
,后跟一个或多个任意字符。但是,正则表达式说下一个字符必须是[a-zA-Z]
,因此任何字符都不会匹配(因为一个字符不能同时是2
和[a-zA-Z]
)
仅仅删除前瞻(2.*[a-zA-Z]
)是朝着正确方向迈出的一步,但以下内容仍然是错误的:
- 不会将前2个字符放在一个组中,以便您可以提取它
- 贪婪匹配(
将贪婪匹配,因此*
而不仅仅是234b342d
,而234b
将不匹配,因为它已被上一次匹配覆盖)2d
*?
,而不是*
)((2.).*?[a-zA-Z]
)。但现在:
- 2后面跟一个字母不匹配
(2.)((?<=[a-zA-Z])|.*?[a-zA-Z])
(2.)(?您的示例没有以字母结尾。请提供更多细节,例如,关于如何创建匹配结果。我的意思是提取一些包含字母的子字符串“234B34D3”。结果“23”是字符串“234b”的前两位数字。结果“2d”是字符串“2d”的前两位数字.非常感谢!!我终于知道环顾四周是如何工作的了。今天真是美好的一天。每个不懂环顾四周的人都应该看看这篇文章。