C# 扩展[^,]和#x2B;,C语言中的正则表达式# 复制品
我正在寻找一个正则表达式来解析CSV值,我遇到了这个正则表达式C# 扩展[^,]和#x2B;,C语言中的正则表达式# 复制品,c#,regex,csv,C#,Regex,Csv,我正在寻找一个正则表达式来解析CSV值,我遇到了这个正则表达式 [^,]+ 我的工作就是把每一个“,”的单词分开。我想知道的是说我有绳子 值名称v1、v2、v3、v4、 现在我需要一个正则表达式来找到单词v1,v2,v3,v4 我试过-> ^value_name\s+([^,]+)* 但这对我不起作用。你能告诉我我做错了什么吗?我记得我在研究正则表达式及其状态机实现。它不是以同样的方式工作吗 如果字符串以Value_name开头,后跟一个或多个空格。去下一个州。在那种状态下,读一个单词直到一
[^,]+
我的工作就是把每一个“,”的单词分开。我想知道的是说我有绳子
值名称v1、v2、v3、v4、
现在我需要一个正则表达式来找到单词v1,v2,v3,v4
我试过->
^value_name\s+([^,]+)*
但这对我不起作用。你能告诉我我做错了什么吗?我记得我在研究正则表达式及其状态机实现。它不是以同样的方式工作吗
如果字符串以Value_name开头,后跟一个或多个空格。去下一个州。在那种状态下,读一个单词直到一个单词出现。然后再做一次!每个单词都将被分组
我理解错了吗?我希望它只在组中得到v1,因为第一个逗号“阻止”它获取其余字段。如何处理这个问题将取决于正则表达式上使用的方法,但可能需要进行两次传递,首先获取所有用逗号分隔的字段,然后在空格上拆分。也许是
^value\u name\s+(?:([^,]+),?)*
。哦,是的,列表
/(?:^value\u name\s+|,\s*)([^,]+)/g
将从理论上获取它们,但您必须在循环中使用RegExp.exec()
来获取捕获,而不是整个匹配
我希望预赛能在JS:(
否则,按照Logan的想法:
/^value\u name\s+([^,]+(?:,\s*[^,]+)*)$/
后跟.split(/,\s*/);您可以使用类似于建议的正则表达式:
(?:^value_name\s+)?([^,]+)(?:\s*,\s*)?
- 第一组是非捕获组,它将匹配行的开头和
值\u名称
为了确保正则表达式在所有匹配中仍然有效,我们通过使用
modified(表示最多匹配一次)使该组成为可选的“?”
- 第二组正在捕获并将匹配您的
数据vXX
- 第三组是非捕获组,将与
及其前后的任何空格相匹配。、
同样,我们通过使用
修饰符使其成为可选的,否则最后一个'?'
组将不匹配,除非我们用最后一个'vXX'
结束字符串',
“value\u name”
的开头,还要匹配每个出现的项其中的'vXX'
的ce
在C#中,您可以使用如下代码列出所有匹配项和组:
Regex r = new Regex(@"(?:^value_name\s+)?([^,]+)(?:\s*,\s*)?");
Match m = r.Match(subjectString);
while (m.Success) {
for (int i = 1; i < m.Groups.Count; i++) {
Group g = m.Groups[i];
if (g.Success) {
// matched text: g.Value
// match start: g.Index
// match length: g.Length
}
}
m = m.NextMatch();
}
Regex r=newregex(@“(?:^value\u name\s+)([^,]+)(?:\s*,\s*)?”;
匹配m=r.Match(subjectString);
while(m.Success){
对于(int i=1;i
Dupe。请看我在哪里向您提供了提示。请使用其他线程,而不是创建新线程。