【问题标题】:Regex for unicode characters not working in .netUnicode 字符的正则表达式在 .net 中不起作用
【发布时间】:2017-02-07 09:13:34
【问题描述】:

我正在尝试解析以下字符串(我猜是法语):

L'OPéRATION NE PEUT êTRE EFFECTUéE

为此,我制作了这个正则表达式 [\p{L} ']+ ,它在 regexbuddy(regex tester) 甚至 [\w' ]+中都能正常工作> 也在工作问题是当我运行我的 .net 代码时,相同的正则表达式不起作用。直到L'OP

附上快照。 提前致谢。

【问题讨论】:

  • 请提供minimal reproducible example 作为文本,以便我们重现问题。屏幕截图比文本更难处理。
  • 您需要展示如何实例化正则表达式对象。您确定L'OP 之后的é 是单个Unicode 代码点吗?如果有带变音符号的char,需要使用[\p{L}\p{M} ']+
  • 这从来都不是正则表达式的问题,我只是添加了这个作为参考,说明为什么正则表达式不能在 .net 中工作但在正则表达式测试器中工作。

标签: c# .net regex unicode


【解决方案1】:

我想我已经找到了问题,它都在一个文件中,我正在阅读那个文件,就像

MemoryStream mm = new MemoryStream(unzippedfile, false);
StreamReader sr = new StreamReader(mm, true);

所以,当字符串到达​​正则表达式对象时,它是不一样的, 它变成了 L'OP.RATION NE PEUT ‘TRE EFFECTU.E.

但是,我现在更改了代码:

StreamReader sr = new StreamReader(mm,Encoding.UTF7, true);

而且一切正常。感谢您的 cmets 我从您的 cmets 那里得到了线索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多