正規表示式(匹配第一個花括號)
學習正則,工作中使用正則讓我對“^
”有了新的認知:
正則中^
匹配輸入字串的開始位置,除非在[]
方括號表示式中使用,此時表示不接受該字符集合。
廢話不多說,直接看栗子吧,
如下圖所示,需要匹配第一個花括號前的地址
[^}]
除了“}
”以外的任何字元
[^}]*
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
- 正規表示式 多行匹配
- 匹配字母正規表示式
- leetcode - 正規表示式匹配LeetCode
- 正規表示式匹配原理
- 字串——正規表示式匹配字串
- 匹配國內座機號碼正規表示式
- 匹配正整數正規表示式
- 正規表示式匹配漢字
- 正規表示式匹配問題
- 匹配護照正規表示式
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- 正規表示式支配匹配模式模式
- JavaScript匹配中文正規表示式JavaScript
- 10. 正規表示式匹配
- 正規表示式的多行匹配
- 正規表示式g全域性匹配識別符號符號
- 正規表示式同時匹配中英文及常用正規表示式
- Leetcode 10. 正規表示式匹配LeetCode
- 匹配浮點數正規表示式
- 匹配二級域名正規表示式
- 匹配純數字正規表示式
- 匹配html標籤正規表示式HTML