正则表达式(匹配第一个花括号)
学习正则,工作中使用正则让我对“^
”有了新的认知:
正则中^
匹配输入字符串的开始位置,除非在[]
方括号表达式中使用,此时表示不接受该字符集合。
废话不多说,直接看栗子吧,
如下图所示,需要匹配第一个花括号前的地址
[^}]
除了“}
”以外的任何字符
[^}]*
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代码中img
的src
地址
/// <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;
}
正则表达式(匹配第一个花括号)相关推荐
- python正则匹配括号以及内容_【Python】正则表达式匹配最里层括号的内容
现在有一个字符串: str1 = '(subject_id = "A" OR (status_id = "Open" AND (status_id = &quo ...
- python正则表达式花括号_python正则表达式(+ {})(二)
加号-重复匹配多次 + 表示匹配前面的子表达式一次或多次,不包括0次 比如,还是上面的例子,你要从文本中,选择每行逗号后面的字符串内容,包括逗号本身 但是,添加一个条件,如果逗号后面没有内容,就不要选 ...
- php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第3节
PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...
- 扩展正则表达式之花括号
花括号允许为可重复的正则表达式指定一个上限.这通常称为间隔(interval). 可以用两种格式来指定区间. m:正则表达式准确出现m次. m, n:正则表达式至少出现m次,至多n次. 这个特性可以精 ...
- java 正则 括号外_正则表达式匹配括号外的符号及数据
正则表达式匹配括号外的符号 [\\?!/\\.,\\s]+(?=[^\\)]*(\\(|$)) 将括号外的?!/.,和空格(连续多个时同时)匹配 如 String string1 = "sd ...
- shell中的括号(小括号,中括号,大括号/花括号)
一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- 正则表达式匹配也可以简单快速(下:实现部分)
转载请注明译者: phylips@bmy 出处: http://duanple.blog.163.com/blog/static/7097176720099402916150/ 实现 Thomps ...
- python正则表达式匹配字符串
关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼 相关资料: re module regular-expressions 使用步骤 import re 导入正则表达式模块 用 re.compile ...
- c语言括号匹配的检验,检验括号匹配的算法
用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...
最新文章
- java日期时间的转化
- python控制画笔尺寸,Python画笔的属性及用法详解
- javaweb学习总结(三十四)——使用JDBC处理MySQL大数据
- 解决一条高难度的,关于时间段 数据汇总问题
- 简化从Win32到Windows 10的迁移之路
- 炁体源流 鸿蒙,一人之下:八绝技中最强被曝光,没想到炁体源流落榜,第一在后头...
- mysql数据库中 pri_MySQL数据库管理——SQL指令集
- 微软总部首席测试专家做客中关村图书大厦“说法”
- Modbus通讯协议学习 - 认识篇
- [Android]应用语言切换的三种方法
- 一次完整的 RPC 流程
- iis访问服务器文件夹权限设置,Windows中合理设置共享文件夹访问权限
- 《分形艺术,当科学嫁给了艺术》作者:林晨 风达
- 电池SOC仿真系列-基于EKF算法的电池SOC估算研究
- EXCEL中多行多列数据与一行或一列数据的互相转换
- 你想知道,Microsoft Edge这种巨型项目是如何进行版本管理的吗?
- 基于LSTM的情感识别在鹅漫电商评论分析中的实践与应用
- 拉丁超立方抽样的Python实现
- 阿里云过期域名的赎回与删除
- Internet RFC 诞生五十周年;互联网信息服务投诉平台上线