<script type="text/javascript"> <!-- var str = "编剧:<M>彭浩翔<br/>主编:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>"; var re = /<[MW]>([^MW<>\\]+)/g; var re1 = /主编:(<[MW]>([^MW<>\\]+))+/; var str1 = str.match(re1)[0]; var arr = str1.match(re); for(var i = 0 ; i < arr.length; i++){ alert(arr[i].replace(/<[MW]>/,"")) } //--> </script>
To kevinwon1985: 关键是要一条
<script type="text/javascript"> <!-- var str = "编剧:<M>彭浩翔<br/>主编:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>"; var re1 = /主编:(<[MW]>([^MW<>\\]+))+/; var arr = str.match(re1); alert(arr[0].replace("主编:","").replace(/<[MW]>/g,"")); //--> </script>最后replace还是需要一个正则. C中有没replaceAll?有点话最后一句改成arr[0].replace("主编:","").replaceAll("<M>","").replaceAll("<W>",""); 没有就没办法了
不了解boost::regex,不同的语言,支持的语法不同,这个不是通用的,就比如.NET中可以像下面这样写,而JavaScript中却不可以 string test = " 编剧:<M>彭浩翔<br/>主演:<M>古天乐 \\ <W>张钰 \\ <W>陈慧琳<br/>"; Regex reg = new Regex(@"(?i)主演:(?:<[MW]>\s*([^\s\\<]+)\s*\\?\s*)+"); Match m = reg.Match(test); if (m.Success) { foreach (Capture c in m.Groups[1].Captures) { richTextBox2.Text += c.Value + "\n"; } }
var str = "编剧:<M>彭浩翔<br/>主编:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>";
var index = str.indexOf("主编");
str = str.substring(index, str.length);
var reg = /[\u4E00-\u9FA5]{2,4}/g;
str = str.match(reg);
str = str.join("、");
str = str.substring(0, 2) + ":" + str.substring(3, str.length);
alert(str);
</script>
var data = "编剧:<M>彭浩翔<br/>主演:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>";
var reg1 = /主演:(.*?)(<\/?br[^>]*>|$)/ig;
var reg2 = /<[^>]*>|\\/g;
if(reg1.test(data))
{
alert(RegExp.$1.replace(reg2, ""));
}
</script>
我用VC开发,使用的是boost::regex。
您给出的方案是用两条正则了,能不用replace,直接用一个正则提出来吗?
主演名字不一定全是中文。
这是我自己配的
只能提取出“陈慧琳”
<script type="text/javascript">
<!--
var str = "编剧:<M>彭浩翔<br/>主编:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>";
var re = /<[MW]>([^MW<>\\]+)/g;
var re1 = /主编:(<[MW]>([^MW<>\\]+))+/;
var str1 = str.match(re1)[0];
var arr = str1.match(re);
for(var i = 0 ; i < arr.length; i++){
alert(arr[i].replace(/<[MW]>/,""))
}
//-->
</script>
关键是要一条
<script type="text/javascript">
<!--
var str = "编剧:<M>彭浩翔<br/>主编:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>";
var re1 = /主编:(<[MW]>([^MW<>\\]+))+/;
var arr = str.match(re1);
alert(arr[0].replace("主编:","").replace(/<[MW]>/g,""));
//-->
</script>最后replace还是需要一个正则.
C中有没replaceAll?有点话最后一句改成arr[0].replace("主编:","").replaceAll("<M>","").replaceAll("<W>","");
没有就没办法了
不了解boost::regex,不同的语言,支持的语法不同,这个不是通用的,就比如.NET中可以像下面这样写,而JavaScript中却不可以
string test = " 编剧:<M>彭浩翔<br/>主演:<M>古天乐 \\ <W>张钰 \\ <W>陈慧琳<br/>";
Regex reg = new Regex(@"(?i)主演:(?:<[MW]>\s*([^\s\\<]+)\s*\\?\s*)+");
Match m = reg.Match(test);
if (m.Success)
{
foreach (Capture c in m.Groups[1].Captures)
{
richTextBox2.Text += c.Value + "\n";
}
}