所以,我知道如何找到具有指定长度的字符串以及如何查找具有指定字母的字符串。但是我怎样才能找到符合这两个条件的字符串?
例如我想找一个带字母" g"的4字母字符串。
我做了什么:
\b[A-Za-z].[Gg][A-Za-z].\b
这个正则表达式匹配任何带有字母" g"的单词。所以现在我需要限制长度,但是当我尝试\b([A-Za-z].[Gg][A-Za-z].){4}\b
时它失败了
答案 0 :(得分:0)
@Alan Moore已经回答here
您必须adapt:
(?<!\S)(?=[a-zA-Z]{4}(?!\S))\S*[gG]\S*
(?<!\S)
匹配一个前面没有非空格的位置 字符。
(?=[a-zA-Z]{4}(?!\S))
进一步声称立场是 接着是4个字母。一旦看清楚 满意,
\S*[gG]\S*
继续前进并消耗字符串, 假设至少有一个字符是g或G.
答案 1 :(得分:0)
要仅匹配长度为4且包含特定字母的ASCII字母序列,您可以使用
\b(?=\w*[Gg])[a-zA-Z]{4}\b
请参阅regex demo
正则表达式分解:
\b
- 一个单词边界(我们需要下一个字母为单词字符:[a-zA-Z0-9_]
,但我们会使用后续消费模式将其限制为[a-zA-Z]
(?=\w*[Gg])
- 一个积极的预测,确保单词中至少有一个g
或G
(\w*
匹配0个或更多字母数字符号)[a-zA-Z]{4}
- 4个ASCII字母\b
- 尾随字边界