求解一个正则表达式

tree_ada 2010-07-22 01:48:01
文本如下
编剧:<M>彭浩翔<br/>主演:<M>古天乐 \ <W>张钰 \ <W>陈慧琳<br/>

要求写一个正则表达式提取出主演名

结果应该是:古天乐 张钰 陈慧琳
...全文
187 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tree_ada 的回复:]
To lxcnn:
我用VC开发,使用的是boost::regex。
您给出的方案是用两条正则了,能不用replace,直接用一个正则提出来吗?
[/Quote]

不了解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";
}
}


地狱羔羊 2010-07-22
  • 打赏
  • 举报
回复

<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>","");
没有就没办法了
竹贤侄 2010-07-22
  • 打赏
  • 举报
回复
[a-zA-Z0-9·\u4e00-\u9fa5]
tree_ada 2010-07-22
  • 打赏
  • 举报
回复
To kevinwon1985:
关键是要一条
地狱羔羊 2010-07-22
  • 打赏
  • 举报
回复

<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>
tree_ada 2010-07-22
  • 打赏
  • 举报
回复
主演:(?:<.>([^<>]*?)(?: \ )?)*?<br/>
这是我自己配的
只能提取出“陈慧琳”
tree_ada 2010-07-22
  • 打赏
  • 举报
回复
To kyzy_yy_pm:
主演名字不一定全是中文。
tree_ada 2010-07-22
  • 打赏
  • 举报
回复
To lxcnn:
我用VC开发,使用的是boost::regex。
您给出的方案是用两条正则了,能不用replace,直接用一个正则提出来吗?
-过客- 2010-07-22
  • 打赏
  • 举报
回复
try...

<script type="text/javascript"> 
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>
kyzy_yy_pm 2010-07-22
  • 打赏
  • 举报
回复
<script>
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>

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧