c# - 通过正则表达式获取匹配的子字符串
问题描述
我有一个像这样的正则表达式问题,
给出一个输入字符串NAMEtony smithNUMBER100ADDRESSLAS vegas
,如
输入字符串有多个用 标记的字段NAME, NUMBER, ADDRESS
,这些字段可以是可选的,并且顺序不固定。(可以ADDRESSLAS vegasNAMEtony smithNUMBER100, or NUMBER100NAMEtony smith
),
我试图使用正则表达式
(NAME([A-Za-z0-9\s]{1,}))?(NUMBER(([A-Za-z0-9\s]{1,}))?(ADDRESS([A-Za-z0-9\s]{1,}))?
得到匹配,但它不起作用。任何人都可以帮忙吗?
解决方案
从您的正则表达式看来,您的数据中没有<
和>
。它允许您使您的数据更容易解析:
var text = "NAMEtony smithNUMBER100ADDRESSLAS vegas";
var escapedText =
text.Replace("ADDRESS", "<ADDRESS>")
.Replace("NAME", "<NAME>")
.Replace("NUMBER", "<NUMBER>");
var dataFields = escapedText.Split('<'); // Now you have strings which look like "NAME>...."
foreach (var dataField in dataFields) {
if (dataField == "") // Somehow handle empty string in the beginning
continue;
var splitted = dataField.Split('>');
string field = splitted[0], data = splitted[1];
switch (field) {
case "NAME": ...
...
}
}
推荐阅读
- powershell - PowerShell完成命令时的事件?
- vb.net - VB.NET - 替换以空格分隔的文本文件中的列值
- python - 如何在 Keras 中将损失函数指定为二次加权 kappa?
- python - scikit-surprise:python 找不到模块,即使 pip 将其列为已安装
- c - 从c中的函数初始化静态常量变量
- python - Python smtplib:如何发送看起来像从电子邮件帐户发送的电子邮件的消息
- gradle - OWASP 抑制,忽略整个文件夹
- php - PHP:SVG 到 PNG 的转换导致错误的图像
- database - 将 PL/SQL sys_refcursor 提取到记录表中
- angular - 在 Angular 中使用 HighCharts 自定义 SVG 符号