求助带特殊字符内容的中英文正则表达式正确匹配写法

huamao2007 2019-10-21 03:37:47
A open file 打开文件
A staitc (test)fina A静态文件
A test demo 测试文件

txt文件中有以上3行文字,希望将中英文区分开来,绝大多数中英文是不混杂的(除第二句之外),使用了正则表达来获取前面的英文和后面的中文,第1句和第3句获取都正常,但是第2句被分成了英文“A staitc”,中文“(test)fina A静态文件”,第二句正常的结果应该分成英文“A staitc (test)fina”,中文“A静态文件”。下面是测试代码,正则表达是不熟练,来请教各位,这个正则应该怎么写:
static void Main()
{
string strline = "A staitc (test) final A静态文件";
string source_en = "";
string target_zh = "";
var pattern = @"[a-zA-Z]\s+[^a-zA-Z\s]";
var rx = new Regex(pattern);
if (rx.Matches(strline).Count == 1)
{
var match = rx.Matches(strline)[0];
source_en = strline.Substring(0, match.Index + 1);
target_zh = strline.Substring(match.Index + match.Length - 1);
Console.WriteLine(source_en);
Console.WriteLine(target_zh);
}
}
...全文
432 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huamao2007 2019-10-21
  • 打赏
  • 举报
回复
大西瓜一块五一斤,正解,测试了好几个特殊字符,基本都通过了。感谢,结帖给分了。有问题再请教你。
huamao2007 2019-10-21
  • 打赏
  • 举报
回复
回复楼上,A这种情况不是固定的,也就是说,最后中文紧挨着的前面可能是大小写字母、前双引号",前单引号',前尖括号<,当然后面会有配对的后引号",后单引号',后尖括号>。 总述一下,这个应用场景主要是把一行中的开始一段为英文的字符(里面可能包括括号,引号,逗号等这些特殊字符)和最后一个空格后面的中文给区分开来,分别赋值给英文字符串变量和中文字符串变量;正常情况下,前面一截都会全是英文,后面一截都会全是中文,但是有极少数的情况会出现,英文中会上面说的特殊字符,中文也可能也会有一些特殊字符。 比如以上正则表达式针对第1句和第3句是完全没问题的,是可以完全区分开来的,但是我写的这个正则表达式针对第2句就有问题,找的不对,现在式求正则表达式该怎么些才能满足上述需求。
  • 打赏
  • 举报
回复

            string strline = "A staitc (test) final A静态文件";
            string source_en = "";
            string target_zh = "";
            var pattern = @"(\b[\x20-\x7e]+\b)\s(.*)";

            MatchCollection mc = Regex.Matches(strline, pattern);

            foreach (Match match in mc)
            {
                source_en = match.Groups[1].Value;
                target_zh = match.Groups[2].Value;
                Console.WriteLine(source_en);
                Console.WriteLine(target_zh);
            }

秋的红果实 2019-10-21
  • 打赏
  • 举报
回复
第一次见这么写正则的 说出你的具体需求,A静态文件,固定是A,还是有什么规律?
huamao2007 2019-10-21
  • 打赏
  • 举报
回复
1.在实际工程中,A是会算在和中文是一起的,这种情况的数据有,但是极少数; 2.对这种情况的英文符号匹配未测试成功过,能提供出正确的正则表达式最好了;
EdsionWang 2019-10-21
  • 打赏
  • 举报
回复
第二行的A为啥算中文呢?看你的需求,匹配英文的时候需要注意符号。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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