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

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

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

如下图所示,需要匹配第一个花括号前的地址
这里写图片描述

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

[^}]* 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;
                    学习正则,工作中使用正则让我对“^”有了新的认知:正则中^匹配输入字符串的开始位置,除非在[]方括号表达式中使用,此时表示不接受该字符集合。废话不多说,直接看栗子吧,如下图所示,需要匹配第一个花括号前的地址[^}]            除了“}”以外的任何字符[^}]*           0或多个非“}”的字符^[^}]*        从左向右匹配非“}”的多个字符...
				
Python 的 re 模块,使得Python具备了使用全部正则表达式的功能Python中的正则表达式正则匹配的时候,第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义. r前缀与regex并不特别相关,但通常与Python中的字符串有关.>>> print 'this is n a test' this is a test
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 本系列从易到难分许多篇,对正则表达式比较熟悉的,可以忽略本篇。 正则表达式有两种定义方式: //1.通过构造函数new出来,需要用\对\进行转义,所以代表数字的\d在参数里要写成 \\d var reg = new RegExp("\\d") reg.test(123) //2.通过字面量书写
使用 ? 字符,正则表达式默认使用贪婪匹配,即尽可能匹配所有符合的,在要匹配正则后加?可只匹配第一个符合的数字,如 123123 使用 (.) 匹配则group(1)为12323 使用(.?)则会匹配到group(1)-group(6) 内容分别为"1",“2”,“3”,“4”,“5”,“6”