1

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

  1. 总是从 "fu:
  2. 总是以"
  3. 并且在这些起点和终点之间至少包含一个大写字母

第3点是我真的无法解决的部分。

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

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

4

4 回答 4

3

适合您的正则表达式是这样的:

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

这里是上述正则表达式的现场演示

于 2012-05-31T09:45:51.027 回答
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

于 2012-05-31T09:08:45.197 回答
0

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

我的解决方案是

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

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

Ruby 中的一个示例:

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

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

于 2012-05-31T11:57:20.003 回答
0

就像是

^"fu:([^"]*?[A-Z][^"]*?)"$
于 2012-05-31T09:06:31.980 回答