C# 使用正则表达式过滤多行双引号字符串

Posted

技术标签:

【中文标题】C# 使用正则表达式过滤多行双引号字符串【英文标题】:C# filter multiline double quoted string with Regular expression 【发布时间】:2013-12-02 22:07:56 【问题描述】:

我想在 C# 中使用正则表达式过滤以下字符串。

+CUSD: 2,"Your account balance is BDT 00.00 valid till 02/05/14. Dial *789*1*1# to get daily General Health Tips,Charge Tk 1.73/SMS", 15

+CUSD: 1,"1 Call Block
2 Mobile Service
3 Infotainment
4 Recharge
5 Roaming
6 Internet
7 Product & Promotion
8 Account Info
9 GP STAR", 15

第一个是单行。第二个是多行。

Regex regex1 = new Regex("\\+CUSD: (\\d+),\"(.*?)\", (\\d+)\\r\\n", RegexOptions.Multiline);

这过滤第一个字符串,但不过滤另一个。

这两个字符串的通用过滤器是什么?

【问题讨论】:

【参考方案1】:

请改用RegexOptions.SingleLine

来自docs:

单行 指定单行模式。更改点的含义 (.) 所以它匹配每个字符(而不是每个字符,除了 \n)。

【讨论】:

【参考方案2】:

考虑以下正则表达式...

\+CUSD: (\d+),\"[\s\S]*?\", (\d+)

祝你好运!

【讨论】:

以上是关于C# 使用正则表达式过滤多行双引号字符串的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式中的双引号

正则表达式删去双引号vscode

无法使用正则表达式在双引号之间提取字符串

正则表达式用于在不被单引号或双引号包围时使用空格分割字符串

php用正则表达式怎么取双引号里面的内容??

正则表达式在单引号内转义双引号