正则表达式(匹配第⼀个花括号)学习正则,⼯作中使⽤正则让我对“^”有了新的认知:
正则中^匹配输⼊字符串的开始位置,除⾮在[]⽅括号表达式中使⽤,此时表⽰不接受该字符集合。废话不多说,直接看栗⼦吧,
如下图所⽰,需要匹配第⼀个花括号前的地址
[^}] 除了“}”以外的任何字符
[^}]*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(fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmlu // 从内容上截取路径数组
Pattern pattern = Patternpile("(?<=\\()[^\\)]+");
Matcher matcher = pattern.matcher(content);
while(matcher.find()){
System.out.up());
}
输出
'Open Sans Light'
'OpenSans-Light'
fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.wof
f2
'woff2'
还有⼀种情况是,我们只匹配url⾥⾯的内容,⽐如要匹配的字符串是
String content = "local('OpenSans-Light'),url(fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2) format 然后将正则规则修改为
Pattern pattern = Patternpile("(?<=url\\()[^\\)]+");
这样就能匹配如下内容了
fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2
fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2
fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2
fonts.gstatic/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2
正则中使⽤了零宽度断⾔
⽤正则表达式匹配两个字符中间的⽂本
String skh ="(?<=\\《)[^\\》]+";//⽤于匹配《》⾥⾯的⽂本
String str="但实际上《kajdwdej》孙⼤伟多";//测试字符串
Pattern pattern=Patternpile(skh);
Matcher matcher=pattern.matcher(str);
boolean is=matcher.find();
if(is)System.out.up());
输出结果为: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.IgnoreCa // 搜索匹配的字符串
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;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论