如何使用Regex提取变量名和值(用=分隔)(C#)

wgx48brx  于 2022-12-30  发布在  C#
关注(0)|答案(2)|浏览(136)

为什么下面的正则表达式不工作?

(?<name>[^\s]+?)\w?=\w?(?<value>[^\s]+?);

https://regex101.com/r/q7NTdS/1
我有一个字符串:

a = 2.234;
b = Hello;

random text...

c =2;

而且我想提取"a"、"b"和"c"(不带空格)以及它们的值"2. 234"、"Hello"和"2",我应该做什么修改?

o7jaxewo

o7jaxewo1#

\w匹配不包含空格的任何单词字符。请尝试使用匹配任何类型的不可见字符的\s(?<name>[^\s]+?)\s?=\s?(?<value>[^\s]+?);- @regex101。

qzlgjiam

qzlgjiam2#

让我们定义一下namevalue是什么。

名称必须 * 以字母开头, 可以 * 包含字母、数字或_
value可以包含任何符号,但不能以白色开头或结尾

namevalue * 必须 * 用=和可选白色分隔。
整个字符串 * 必须 * 以;和白色结尾
则图案可以是

\s*(?<name>\p{L}[\p{L}_0-9]*)\s*=\s*(?<value>.*?)\s*;\s*

Fiddle

相关问题