正则表达式 - 查找具有至少一个大写字母的特定字符串

时间:2012-05-31 09:02:50

标签: regex

我正在寻找一个匹配特定字符串的正则表达式:

  1. 始终以"fu:
  2. 开头
  3. 始终以"
  4. 结尾
  5. 并且在起点和终点之间至少包含一个大写字母
  6. 第3点是我真正无法解决的部分。

    正则表达式"fu:(.*)?"匹配除第3点之外的所有字符串。

    [编辑] 它现在非常接近,唯一的问题是它在第二次之后没有停止“。 基本上这个字符串:
    “fu:没有大写字母:,其他一些带有大写字母的随机文字”
    是匹配但不应该。

4 个答案:

答案 0 :(得分:3)

适用于你的正则表达式是:

/^"fu:.*?[A-Z].*?"$/

这里是live demo of above regex

答案 1 :(得分:1)

^"fu:.*[A-Z].*"$

如果您希望搜索多行文字,请不要忘记多行模式。

^"fu:  - starts with "fu:
.*     - any other characters
[A-Z]  - capital letter
.*     - other characters
"$     - " at the end

测试它的好工具:http://www.regexplanet.com/advanced/java/index.html

答案 2 :(得分:0)

这样的东西
^"fu:([^"]*?[A-Z][^"]*?)"$

答案 3 :(得分:0)

我评论了anubhava解决方案的一个问题(它只匹配A到Z范围内的大写字母),但后来我自己找到了解决方案。请注意,这需要POSIX-compliant regular expression引擎支持Unicode。

我的解决方案是

/^"fu:.*[[:upper:]].*"$/

它解决了用英语以外的其他语言查找大写字母的问题(部分或完全不同的字母表)。

Ruby中的一个例子:

rx = /^"fu:.*[[:upper:]].*"$/
arr = ['"fu:Berlin"', '"fu:İstanbul"', '"fu:Washington"', '"fu:Örebro"', '"fu:Москва"']
arr.map {|s| s.scan rx}

在这种情况下,所有字符串都匹配。