我有这个字符串文字:
<meta http-equiv="Content-Type" content="text/html;" charset="utf-8">
<style type="text/css">
body {
font-family: Helvetica, arial, sans-serif;
font-size: 16px;
}
h2 {
color: #e2703b;
}.newsimage{
margin-bottom:10px;
}.date{
text-align:right;font-size:35px;
}
</style>
为了清晰起见,添加了新行和标识,真正的字符串没有它
如何获得h2
颜色的值?在这种情况下,它应该是 - #e2703b;
我不知道在这种情况下如何使用正则表达式。
更新 如果我这样做:
Match match = Regex.Match(cssSettings, @"h2 {color: (#[\d|[a-f]]{6};)");
if (match.Success)
{
string key = match.Groups[1].Value;
}
根本不起作用
答案 0 :(得分:8)
我不确定正则表达式是否可行,但您可以使用此正则表达式提取值:
h2 \\{color: (#(\\d|[a-f]){6};)}
从中获取第一个组将获得属于h2颜色的值。
修改强>
这段代码应该得到它:
String regex = "h2 \\{color: (#(\\d|[a-f]){6};)}";
String input = "<meta http-equiv=\"Content-Type\" content=\"text/html;\" charset=\"utf-8\"><style type=\"text/css\">body {font-family: Helvetica, arial, sans-serif;font-size: 16px;}h2 {color: #e2703b;}.newsimage{margin-bottom:10px;}.date{text-align:right;font-size:35px;}</style>";
MatchCollection coll = Regex.Matches(input, regex);
String result = coll[0].Groups[1].Value;
答案 1 :(得分:1)
如前所述,字符串中有无标签[\ s]和换行符[\ n] 。正则表达式为:
(?<=[.]*h2{color:)[#\w]*(?=[.]*)
因此代码变为,
Match match = Regex.Match(cssSettings, @"(?<=[.]*h2{color:)[#\w]*(?=[.]*)");
if (match.Success)
{
string key = match.Value;
}
答案 2 :(得分:0)
试试这个:
@"h2\s*{\s*color: (#.{6};)"
答案 3 :(得分:0)
这应该是相当强大的。可选空格,换行符和东西。如果h2
没有color
,也会找到半角颜色代码并且不会跳转到下一个块。
h2\s*\{[^}]*color\s*:\s*?(#[a-f\d]{3}|#[a-f\d]{6})\b
结果是第一个也是唯一一个被捕获的组。