提问者:小点点

在“Status”中查找值I(或其他值)的正确正则表达式是什么:“I”,?


我有一长串的信息,其中有“状态”:“我”,

我想得到“Status”的值,我不需要Status这个词,所以我试着告诉我的正则表达式要注意“Status”:哪个应该是“I”。。

我也想得到我没有的价值”,但我正在努力弄清楚如何在以下情况下引用引号:...

"(""Status"" "":"")[a-zA-Z]"
"(?<=""Status"":"")^[a-zA-Z]"
"(?<=""Status"":)^[a-zA-Z]"
"(?<=""Status"":""""")^[a-zA-Z]"

我试过几种变体。。但是我正在努力。。

我也使用"前后两次状态,因为我使用. net框架,它不喜欢我...

我很高兴结果是我或“我”,但更喜欢我,有什么建议吗?

示例

string invoiceId = Regex.Match(invoiceResult, @"(?<=""IssuedInvoiceId"":)\d{7}").ToString();

string status = Regex.Match(invoiceResult, @"(?<=""Status"":""""")^[a-zA-Z]").ToString();

enter code here

     

发票有效,这给了我正确的号码...我只是需要帮助来弄清楚状态匹配的价值...

非常感谢,


共1个答案

匿名用户

试试这个正则表达式

<代码>(?

它在"State":字符串之后的引号(")之间找到1个字符。如果状态属性的值可以超过1个字符,则在点()后加上()符号。

<代码>(?

如果您想限制符号匹配,您可以将点(.)更改为适用的符号。例如:

<代码>(?

<代码>(?

C#中的代码

string input = "some text before \"Status\":\"I\", some text after";
string pattern = "(?<=\"Status\":\")[A-Z](?=\")";
Match match = Regex.Match(input, pattern);
if (match.Success)
    Console.WriteLine(match.Value);