学习正则,工作中使用正则让我对“^”有了新的认知:

正则中^匹配输入字符串的开始位置,除非在[]方括号表达式中使用,此时表示不接受该字符集合。

废话不多说,直接看栗子吧,

如下图所示,需要匹配第一个花括号前的地址

[^}] 除了“}”以外的任何字符

[^}]* 0或多个非“}”的字符

^[^}]* 从左向右匹配非“}”的多个字符

^[^}]*\} 从左向右匹配第一个包含“}”的字符串


正则表达式匹配大括号里面的内容

方法一: {[^}]+}

var str = "aa ds sdf {asdf asdfag }";
var str1 = str.match(/\{[^\}]+\}/)[0];

方法二: /{[\S\s]+}/或者/{(.|\r\n)+}/

注:\S\s可是微软文档中对\n匹配的标准用法哦

var str = "aa ds sdf {asdf asdfag }";
var str1 = str.match(/\{[\S\s]+\}/)[0];

如何利用正则表达式匹配花括号内的内容

匹配花括号内的内容

Input: {abc}, Output: abc

正则表达式: (?<=\{)[^}]*(?=\})

(?<=\{) 匹配以左花括号开头
[^}]* 取得内容
(?=\}) 匹配以右花括号结束

private List<String> GetTokens(String str)
{Regex regex = new Regex(@"(?<=\{)[^}]*(?=\})", RegexOptions.IgnoreCase);MatchCollection matches = regex.Matches(str);// Results include braces (undesirable)return matches.Cast<Match>().Select(m => m.Value).Distinct().ToList();
}

java正则表达式匹配小括号内的内容

经常用到正则匹配小括号内容,在此摘录下来

String content = "src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2) format('woff2')";
// 从内容上截取路径数组
Pattern pattern = Pattern.compile("(?<=\\()[^\\)]+");
Matcher matcher = pattern.matcher(content);
while(matcher.find()){System.out.println(matcher.group());
}

输出

'Open Sans Light'
'OpenSans-Light'
http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2
'woff2'

还有一种情况是,我们只匹配url里面的内容,比如要匹配的字符串是

String content = "local('OpenSans-Light'),url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2) format('woff2');unicode-range:U+0460-052F,U+20B4,U+2DE0-2DFF,U+A640-A69F;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2) format('woff2');";

然后将正则规则修改为

Pattern pattern = Pattern.compile("(?<=url\\()[^\\)]+"); 

这样就能匹配如下内容了

http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2
http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2
http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2
http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2

正则中使用了零宽度断言


用正则表达式匹配两个字符中间的文本

    String skh ="(?<=\\《)[^\\》]+";//用于匹配《》里面的文本String str="但实际上《kajdwdej》孙大伟多";//测试字符串Pattern pattern=Pattern.compile(skh);Matcher matcher=pattern.matcher(str);boolean is=matcher.find();if(is)System.out.print(matcher.group());

输出结果为:kajdwdej

同理将skh字符串中换成对应所要匹配的两个字符,就可以匹配两个字符中间的文本


正则获取HTML代码中imgsrc地址

/// <summary>
/// 获得HTML中所有图片的src地址
/// </summary>
/// <param name="sHtmlText">HTML代码</param>
/// <returns>图片的URL列表</returns>
public static string[] GetHtmlImageUrlList(string sHtmlText)
{// 定义正则表达式用来匹配 img 标签 Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);// 搜索匹配的字符串 MatchCollection matches = regImg.Matches(sHtmlText);int i = 0;string[] sUrlList = new string[matches.Count];// 取得匹配项列表 foreach (Match match in matches)sUrlList[i++] = match.Groups["imgUrl"].Value;return sUrlList;
}

正则表达式(匹配第一个花括号)相关推荐

  1. python正则匹配括号以及内容_【Python】正则表达式匹配最里层括号的内容

    现在有一个字符串: str1 = '(subject_id = "A" OR (status_id = "Open" AND (status_id = &quo ...

  2. python正则表达式花括号_python正则表达式(+ {})(二)

    加号-重复匹配多次 + 表示匹配前面的子表达式一次或多次,不包括0次 比如,还是上面的例子,你要从文本中,选择每行逗号后面的字符串内容,包括逗号本身 但是,添加一个条件,如果逗号后面没有内容,就不要选 ...

  3. php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第3节

    PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...

  4. 扩展正则表达式之花括号

    花括号允许为可重复的正则表达式指定一个上限.这通常称为间隔(interval). 可以用两种格式来指定区间. m:正则表达式准确出现m次. m, n:正则表达式至少出现m次,至多n次. 这个特性可以精 ...

  5. java 正则 括号外_正则表达式匹配括号外的符号及数据

    正则表达式匹配括号外的符号 [\\?!/\\.,\\s]+(?=[^\\)]*(\\(|$)) 将括号外的?!/.,和空格(连续多个时同时)匹配 如 String string1 = "sd ...

  6. shell中的括号(小括号,中括号,大括号/花括号)

    一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  7. 正则表达式匹配也可以简单快速(下:实现部分)

    转载请注明译者: phylips@bmy 出处: http://duanple.blog.163.com/blog/static/7097176720099402916150/   实现 Thomps ...

  8. python正则表达式匹配字符串

    关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼 相关资料: re module regular-expressions 使用步骤 import re 导入正则表达式模块 用 re.compile ...

  9. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

最新文章

  1. java日期时间的转化
  2. python控制画笔尺寸,Python画笔的属性及用法详解
  3. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据
  4. 解决一条高难度的,关于时间段 数据汇总问题
  5. 简化从Win32到Windows 10的迁移之路
  6. 炁体源流 鸿蒙,一人之下:八绝技中最强被曝光,没想到炁体源流落榜,第一在后头...
  7. mysql数据库中 pri_MySQL数据库管理——SQL指令集
  8. 微软总部首席测试专家做客中关村图书大厦“说法”
  9. Modbus通讯协议学习 - 认识篇
  10. [Android]应用语言切换的三种方法
  11. 一次完整的 RPC 流程
  12. iis访问服务器文件夹权限设置,Windows中合理设置共享文件夹访问权限
  13. 《分形艺术,当科学嫁给了艺术》作者:林晨 风达
  14. 电池SOC仿真系列-基于EKF算法的电池SOC估算研究
  15. EXCEL中多行多列数据与一行或一列数据的互相转换
  16. 你想知道,Microsoft Edge这种巨型项目是如何进行版本管理的吗?
  17. 基于LSTM的情感识别在鹅漫电商评论分析中的实践与应用
  18. 拉丁超立方抽样的Python实现
  19. 阿里云过期域名的赎回与删除
  20. Internet RFC 诞生五十周年;互联网信息服务投诉平台上线

热门文章

  1. 信息学奥赛之数学一本通 C++版 用编程的方式学数学
  2. 总结1 有关servlet验证码作业
  3. 1688API接口seller_info - 获得店铺详情
  4. 浅谈 速算机器人 问题
  5. React Navigation 基本使用
  6. 【Excel / WPS表格】如何按列进行合并单元格?或者说按行进行合并单元格?
  7. 《Oracle内核技术解密》读书笔记(二)
  8. Java2之狼的精神
  9. 职场生存法则,太精辟了!
  10. 【HTML学习】表格相关(01)- 增强版