求正则表达式“ abcd1234*5678 ”
分别取出
abcd
1234
5678
前2个好写,最后一个? 取乘号之后的数字?
a=" abcd1234*5678 "
b = Regex.Match(a, @"\S[a-z]*").ToString();
c = Regex.Match(a, @"\d+").ToString();
d = ?
分别取出
abcd
1234
5678
前2个好写,最后一个? 取乘号之后的数字?
a=" abcd1234*5678 "
b = Regex.Match(a, @"\S[a-z]*").ToString();
c = Regex.Match(a, @"\d+").ToString();
d = ?
解决方案 »
- winForms程序可以调用c代码吗
- WinForms文字透明如何实现
- Microsoft WCF 服务主机
- 关于PDA数据采集
- TreeView AfterLabelEdit 事件 (非常急)
- 请问notifyIcon1隐藏后的用法
- 关于datagrid自定义删除按钮单击两次才弹出窗口的问题
- **************找到工作了,有两个不错的公司要我,我该如何挑选,那个对我更有前途,大家帮帮忙**************
- 如何在C#的panel中显示视频流?
- 请教!偶建立了一个windows窗体,运行时怎么样才不会显示标题栏??
- 菜鸟求教一个关于winform的问题 关于重置窗口的
- 关于向SQL写入和读取byte[]数组问题
{
所有匹配项。或全为字母,或全为数字。
}
abcd1234*5678 ,jhg90*12,def34*67
并且要保证是 字母+数字*数字 这个规则。
要检测是否符合规律,如果符合就抽出中间的三个值。我这样写的,虽然可以跑通程序,不算理想的。
d= Regex.Match(a, @"\*[0-9]+").ToString();
d=d.Replace("*","");是否还有高人?
foreach(Match m in ms) // 循环处理得到的所有 字母数字*数字的匹配。
{
b=m.Groups[1].Value; // 这里得到全是字母
c=m.Groups[2].Value; // 这里得到是字母后面紧跟着的数字。
d=m.Groups[3].Value; // 这里得到的是*后的数字
}
我贴出现在的代码:(增加一个功能,输入s="abc123*456" 扩展到s="abc0.1*456" "abc1.0*456"这种位访问模式,也好用。)现在用了字符串查找替换的方法,很笨,希望用正则一次完成。
Single address;
int number;
string type,addr,num,addr1,addr2;
type= Regex.Match(s, @"\S[a-z]*").ToString();
addr = Regex.Match(s, @"\d*").ToString();
addr1 = Regex.Match(s, @"\d\.").ToString();
addr2 = Regex.Match(s, @"\.\d").ToString();
num = Regex.Match(s, @"\*[0-9]+").ToString(); num=num.Replace("*","");
if (addr=="")//如果是位访问模式
{
addr1 = addr1.Replace(".", "");
addr2 = addr2.Replace(".", ""); address = int.Parse(addr1) * 8 + int.Parse(addr2);
address = address / 8;
addr = address.ToString(); }
^([a-zA-Z]+)(\d+)\*(\d+)$
改成你这样,如果一个字符串里出现两个这样的数据,就读不出来喽,如:“ abc123*456 abc123*456 ”