首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析txt文件中列的c# regex

解析txt文件中列的c# regex
EN

Stack Overflow用户
提问于 2015-08-22 09:37:49
回答 2查看 288关注 0票数 0

我有一个像这样的文本文件

代码语言:javascript
运行
复制
FieldA    FieldB    FieldC    FieldD  FieldE
  001       中文                15%     语言
  002       法文      20        12%     外文 
  003       英文      21                外文
  004     西班牙语               10%     外文

基本上,我把文件读了进去,分成了几行。现在,我想使用regex将每一行拆分为字段。如您所见,列中的某些字段实际上是空的,这些字段可能不是固定的宽度,而是由至少一个空白分隔。有些字段包含汉字。

我能知道怎么做吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-22 09:52:02

代码语言:javascript
运行
复制
string s = "001       中文                15%     语言";
Match m = Regex.Match(s, 
    @"(?<A>\d*)\s*" +       // Field A: any number of digits
    @"(?<B>\p{L}*)\s*" +    // Field B: any number of letters
    @"(?<C>\d*)\s+" +       // Field C: any number of digits
    @"(?<D>(\d+%)?)\s*" +   // Field D: one or more digits followed by '%', or nothing
    @"(?<E>\p{L}*)");       // Field E: any number of letters
string fieldA = m.Groups["A"].Value;    // "001"
string fieldB = m.Groups["B"].Value;    // "中文"
string fieldC = m.Groups["C"].Value;    // ""
string fieldD = m.Groups["D"].Value;    // "15%"
string fieldE = m.Groups["E"].Value;    // "语言"

所有字段都是可选的。如果一个字段不存在,它将被捕获为空字符串,就像在上面的fieldC中一样。

票数 1
EN

Stack Overflow用户

发布于 2015-08-22 09:58:23

代码语言:javascript
运行
复制
/\s*(\d*)\s*([^\d\s]*)\s*(\d*)\s\s*(\d*%?)\s*([^\d\s]*)/

这里是一个正则表达式,它将捕获您想要的所有内容,并在每一行上使用它。

代码语言:javascript
运行
复制
\s*         //any number of whitespace
(\d*)       //any number of digits
\s*         //any number of whitespace
([^\d\s]*)  //any number of characters that aren't whitespace or digits
\s*         //any number of whitespace
(\d*)\s     //any number of digits with a space after it
\s*         //any number of whitespace
(\d*%?)     //any number of digits with an optional %
\s*         //any number of whitespace
([^\d\s]*)  //any number of characters that aren't whitespace or digits
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32154581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档