我正在寻找一个匹配特定字符串的正则表达式:
- 总是从
"fu:
- 总是以
"
- 并且在这些起点和终点之间至少包含一个大写字母
第3点是我真的无法解决的部分。
正则表达式"fu:(.*)?"
匹配除第 3 点之外的所有字符串。
[编辑] 现在已经很接近了,唯一的问题是它不会在第二个“之后停止。基本上这个字符串:
“fu:没有大写字母:,一些其他带有大写字母的随机文本”
是匹配但不应该。
我正在寻找一个匹配特定字符串的正则表达式:
"fu:
"
第3点是我真的无法解决的部分。
正则表达式"fu:(.*)?"
匹配除第 3 点之外的所有字符串。
[编辑] 现在已经很接近了,唯一的问题是它不会在第二个“之后停止。基本上这个字符串:
“fu:没有大写字母:,一些其他带有大写字母的随机文本”
是匹配但不应该。
^"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
我评论了 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}
在这种情况下,所有字符串都匹配。
就像是
^"fu:([^"]*?[A-Z][^"]*?)"$