C# 创建正则表达式时遇到的问题
我有一个测量设备,可以创建以下格式的样本:C# 创建正则表达式时遇到的问题,c#,regex,C#,Regex,我有一个测量设备,可以创建以下格式的样本: V GL020(1)=20110117161703 另一个例子: V GLXX011(10)=ADEF=*GFSDAS 我要做的是创建一个返回 GL020/1/20110117161703第一个示例和 GLXX011/10/ADEF=*GFSDAS用于第二个示例 我发现一个正则表达式可以可靠地匹配前两个必需部分: *?(?:[a-z][a-z]*[0-9]+[a-z0-9]*)。(?\d+) 但是,我仍然缺少第一个“=”之后的部分。我不知道这是否重要,
V GL020(1)=20110117161703
另一个例子:
V GLXX011(10)=ADEF=*GFSDAS
我要做的是创建一个返回
GL020/1/20110117161703
第一个示例和
GLXX011/10/ADEF=*GFSDAS
用于第二个示例
我发现一个正则表达式可以可靠地匹配前两个必需部分:
*?(?:[a-z][a-z]*[0-9]+[a-z0-9]*)。(?\d+)
但是,我仍然缺少第一个
“=”
之后的部分。我不知道这是否重要,但第一个“=”
后面的部分可能包含类似“=”
本身的字符。您可以使用如下表达式:
(\w+)\((\d+)\)=(\S+)
在第一个、第二个和第三个捕获组中为您提供所需的子字符串。您可以使用以下表达式:
(\w+)\((\d+)\)=(\S+)
在第一个、第二个和第三个捕获组中提供所需的子字符串。尝试使用此子字符串:
([^\(|\s]+)\((\d+)\)=([\w|\=|\*]+)
尝试使用此选项:
([^\(|\s]+)\((\d+)\)=([\w|\=|\*]+)
请使用此正则表达式:
(?<first>\w+)\s(?<second>\w+)(?<third>\(\d+\))=(?<forth>.*)
(?\w+)\s(?\w+)(\(\d+)=(?*)
请使用此正则表达式:
(?<first>\w+)\s(?<second>\w+)(?<third>\(\d+\))=(?<forth>.*)
(?\w+)\s(?\w+)(\(\d+)=(?*)
在匹配等号后的所有内容时遇到问题?然后正好匹配一个等号+后面的所有符号(当然会包括更多等号)难道你不能跳过前两个字符(V
)并将(
和)=
替换为“/”(如果重要的话,只需它们的第一次出现)?在匹配等号之后的所有内容时遇到问题?然后正好匹配一个等号+后面的所有符号(当然会包括更多的等号)难道你不能跳过前两个字符(V
)并将(
和)=
替换为“/”(如果重要的话,只是它们的第一次出现)?哈哈。很容易。我花了好几个小时在那个上面(.非常感谢。第三个捕获组可能也包括空格。我该如何处理?@lightxx,如果您只想捕获第一个=
之后的所有内容,可以将\S+
更改为+
(
不匹配新行,除非您使用S
标志。)哈哈。哇。太简单了。我花了好几个小时在那上面。:(。非常感谢。第三个捕获组可能也包括空格。我该怎么处理呢?@lightxx,如果你只想捕获第一个=
之后的所有内容,你可以将\S+
更改为+
。(
不匹配新行,除非您使用s
标志。)@Qtax在答案中添加新行比在注释中解释要快,应该更正什么。@Qtax在答案中添加新行比在注释中解释要更正什么要快。