Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 还是正则表达式中的表达式?_C#_Regex_Or Operator - Fatal编程技术网

C# 还是正则表达式中的表达式?

C# 还是正则表达式中的表达式?,c#,regex,or-operator,C#,Regex,Or Operator,我试图使用一个正则表达式来表示一条消息,该消息的末尾有一个温度。整个消息的示例如下所示: RH= 12.1 %RH T= -3.5 'C 如果温度不明显,则温度(以及与此问题相关的部分)为t=-3.5'C。我想在结尾捕获C或F。现在我有一个表达: "RH=\\s*(?<1>[^\\s]*)\\s%RH T=\\s*(?<2>[^\\s]\\s*'\\w)" “RH=\\s*(?[^\\s]*)\\s%RH T=\\s*(?[^\\s]\\s*”\\w) 但这将在最后

我试图使用一个正则表达式来表示一条消息,该消息的末尾有一个温度。整个消息的示例如下所示:

RH= 12.1 %RH T= -3.5 'C
如果温度不明显,则温度(以及与此问题相关的部分)为
t=-3.5'C
。我想在结尾捕获
C
F
。现在我有一个表达:

"RH=\\s*(?<1>[^\\s]*)\\s%RH T=\\s*(?<2>[^\\s]\\s*'\\w)"
“RH=\\s*(?[^\\s]*)\\s%RH T=\\s*(?[^\\s]\\s*”\\w)

但这将在最后捕获任何字母数字字符。如何更改最后一个
'\\w'
结尾处的“仅
C
F
?”?

您可以使用a:而不是
\\w
,写
[CF]
您可以使用a:而不是
\\w
,写
[CF]
如果提供了明确的格式,不要使用复杂的正则表达式,但要简单:

int index = data.LastIndexOf('\''); //index of last ' symbol
data.Substring(index);

应该适合您。

好吧,如果提供的formt是确定的,不要使用复杂的正则表达式,而是简单的:

int index = data.LastIndexOf('\''); //index of last ' symbol
data.Substring(index);

应该适合你。

另一种选择是用
c | f
替换最后的
\\w
,意思是:要么是c要么是f。

另一种选择是用
c | f
替换最后的
\\w
,意思是:要么是c要么是f。

提示:使用逐字字符串并保留珍贵和罕见的反斜杠:
@“RH=\s*(?[^\s]*)\s%RH T=\s*(?[^\s]\s*”[CF])“
另一种指定OR的方法是
(例如
(C | F)
,但字符类在这种情况下更好。提示:使用逐字字符串并保留珍贵和罕见的反斜杠:
@“RH=\s*(?[^\s]*)\s]\s%RH T=\s*(?[^\s].[/CF>”)是另一种指定
的方法(例如,
(C | F)
),但在这种情况下字符类更好。当我这样做并将其更改为“RH=\\s*(?[^\\s]*)\\s%RH T=\\s*(?[^\\s]\\s*”\\w)时,它会告诉匹配的字符不是C或F。到目前为止,它已经匹配了a、1甚至。@Sterling:我不明白:看起来你还没有将
\\w
更改为
[CF]
?哦,粘贴了错误的表达式-RH=\\s*(?[^\\s]*)\\s%RH T=\\s*(?[^\\s]\\s*'[CF])Nevermind,Nevermind误读了我的输出。这确实有效!当我这样做并将其更改为“RH=\\s*(?[^\\s]*)\\s%RH T=\\s*(?[^\\s]\\s*\\s*\\s*.\\w)“,它告诉匹配的字符不是C或F。到目前为止,它已经匹配了a、1甚至uu。@Sterling:我不明白:看起来你没有将
\\w
更改为
[CF]
?哦,粘贴了错误的表达式-RH=\\s*(?[^\\s]*)\\s%RH t=\\s*(?[^\\s]\\s*[CF])Nevermind,Nevermind误读了我的输出。这确实有效!