在线求救,求一正则表达式,很简单的。

sra 2005-08-03 04:53:11
有一段代码,比如:

wefawelfawj[xxxxxx]f efawfi jawe;ofj awoief awe
awfef[xxx]
awe aw
f we[xxxxxxxxxxxxxxx]fwaefaef

我要取出"[]"里面的东西。
...全文
203 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sra 2005-08-03
  • 打赏
  • 举报
回复
刚才又测试了一下 pontus(pontus)的 \[[^\]]*?\],也会捕获到 "[]"。

所以最符合要求的是:

xiahouwen @"\w*\[(?<content>[\w\.]*)\]\w*"



fancyf(凡瑞) @"\[(?<content>[^]]*)\]"
sra 2005-08-03
  • 打赏
  • 举报
回复
@"\[(?<content>[^]]*)\]"

测试通过! 谢谢fancyf(凡瑞)指点。
fanruinet 2005-08-03
  • 打赏
  • 举报
回复

@"\[(?<content>[^]]*)\]"

然后再用xiahouwen的代码就行了
sra 2005-08-03
  • 打赏
  • 举报
回复
fancyf(凡瑞)的方法包括了"[]",但这个我没有打算捕获出来。
sra 2005-08-03
  • 打赏
  • 举报
回复
啊! 没看到,Regex r = new Regex(@"\w*\[(?<content>[\w\.]*)\]\w*"); 这个方法可行,我测试成功了。呵呵!

谢谢各位的指点,结贴。
fanruinet 2005-08-03
  • 打赏
  • 举报
回复
如果允许[]之间有任何字符的话应该用
@"\[[^]]*\]"
活靶子哥哥 2005-08-03
  • 打赏
  • 举报
回复
你没有看到我第4次回的帖子么?
我测试过了,可以捕捉到"." 的,xx...x7x.xx这样的没有问题。
Regex r = new Regex(@"\w*\[(?<content>[\w\.]*)\]\w*");
Match m = r.Match("we[f]awelfawj[xx...x7x.xx]f efa[xsdfsdfx7xxx] jawe;ofj awoie[sdf4445a]we");
sra 2005-08-03
  • 打赏
  • 举报
回复
pontus(pontus)恭喜你中奖,你的表达式通过了。

大家鼓掌啊!~~~~
sra 2005-08-03
  • 打赏
  • 举报
回复
呵呵,这段代码仍然不能捕获到带"."的字符串,不过辛苦你了。
活靶子哥哥 2005-08-03
  • 打赏
  • 举报
回复
带"."的在表达式内加上"."就可以了
下面的代码经过测试
Regex r = new Regex(@"\w*\[(?<content>[\w\.]*)\]\w*");
其他的如空格回车换行等都可以按照这样加到表达式内


Regex r = new Regex(@"\w*\[(?<content>[\w\.]*)\]\w*");
Match m = r.Match("we[f]awelfawj[xx.x7xxx]f efa[xsdfsdfx7xxx] jawe;ofj awoie[sdf4445a]we");
while (m.Success)
{
for (int i = 1; i <= m.Groups.Count; i++)
{
Group g = m.Groups[i];
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
Response.Write("捕获到----'" + c + "', 起始位置="+c.Index + "<br/>");
}
}
m = m.NextMatch();
活靶子哥哥 2005-08-03
  • 打赏
  • 举报
回复
请测试如下代码,我测试过 正常运行,可以得到你想要的结果,
如果还有不合适的地方请短消息我,明天见
<%@Page Language="c#" Debug="true"%>
<%@ Import Namespace="System.Configuration" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="gb2312" lang="gb2312">
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="title" content="" />
<meta name="author" content="活靶子,Huobazi,www.AspxBoy.com" />
<meta name="subject" content="" />
<meta name="language" content="gb2312" />
<meta name="keywords" content="" />
<meta name="Copyright" content="www.AspxBoy.com" />
<meta name="robots" content="all" />

<script langauge="c#" runat="server">

void Page_Load(object o , EventArgs e)
{
if(!Page.IsPostBack)
{
//Response.Write(Server.UrlEncode("金"));
Regex r = new Regex(@"\w*\[(?<content>\w*)\]\w*");
Match m = r.Match("we[f]awelfawj[xxx7xxx]f efa[xsdfsdfx7xxx] jawe;ofj awoie[sdf4445a]we");
while (m.Success)
{
for (int i = 1; i <= m.Groups.Count; i++)
{
Group g = m.Groups[i];
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
Response.Write("捕获到----'" + c + "', 起始位置="+c.Index + "<br/>");
}
}
m = m.NextMatch();
}
}
}

</script>
</head>
<body>
<form id="frm" runat="server">



</form>
</body>
</html>
sra 2005-08-03
  • 打赏
  • 举报
回复
string myMemo=nMemo.Text;
Regex r = new Regex(@"\w*\[(?<content>\w*)\]\w*");
Match m;
for(m = r.Match(myMemo); m.Success; m = m.NextMatch())
{
string content = m.Groups["content"].Value;
Response.Write(content);
}

这样已经可以找到了,但不能在字符里加"."。请在改一改表达式吧。谢谢!:)
mathsword 2005-08-03
  • 打赏
  • 举报
回复
^[^\[\]]*\[([^\[\]]*)\][^\[\]]*
pontus 2005-08-03
  • 打赏
  • 举报
回复
string str = @"wefawelfawj[xxxxxx]f efawfi ja[we;of]j awoief awe";

Regex re = new Regex(@"\[([^\]]*?)\]",RegexOptions.Singleline);

MatchCollection mc = re.Matches(str);

for(int i=0 ;i<mc.Count ;i++)
{
Response.Write(mc[i].Value.ToString().Trim('[',']'));
}
eyych 2005-08-03
  • 打赏
  • 举报
回复
up
活靶子哥哥 2005-08-03
  • 打赏
  • 举报
回复
上面代码我测试过的,
多个[]那就需要循环遍历每个匹配获得
sra 2005-08-03
  • 打赏
  • 举报
回复
在说一下,[]里的内容有"."和"_",这个有关系吗?
sra 2005-08-03
  • 打赏
  • 举报
回复
xiahouwen(活靶子.NET) ,你的方法得不出来结果。
m.Success 直接跳出判断了。
而且我要的是一组数据,会有多个"[]"内容。
pontus 2005-08-03
  • 打赏
  • 举报
回复
\[[^\]]*?\]
iperfect 2005-08-03
  • 打赏
  • 举报
回复
表达式:@"\w*\[(?<content>\w*)\]\w*"

星星果然是高手,佩服!!!
加载更多回复(3)
在Windows 10或Windows 11操作系统中,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置中没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略中设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或中断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了帮助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享中常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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