C# 正则表达式获取字符串的第一部分
我有这个正则表达式C# 正则表达式获取字符串的第一部分,c#,.net,regex,C#,.net,Regex,我有这个正则表达式 (?<=\d\.\s).+(?=\s-\s) 正则表达式给了我产品(第一部分)。如果存在子产品,则该子产品与该产品之间由一个用空格(-)包围的破折号分隔 但是,有些产品没有子产品。例如: 6. ComprehensiveBolt 正则表达式应该给我comprehensiveBolt,但它不返回任何内容 我需要对我的正则表达式进行什么更新,以便无论子产品是否存在,我都可以获得该产品?这是一种方法。 请注意,只有当您的产品可能是一个短语时,才需要此选项 (?这是一种方式
(?<=\d\.\s).+(?=\s-\s)
正则表达式给了我产品(第一部分)。如果存在子产品,则该子产品与该产品之间由一个用空格(-
)包围的破折号分隔
但是,有些产品没有子产品。例如:
6. ComprehensiveBolt
正则表达式应该给我comprehensiveBolt
,但它不返回任何内容
我需要对我的正则表达式进行什么更新,以便无论子产品是否存在,我都可以获得该产品?这是一种方法。请注意,只有当您的产品可能是一个短语时,才需要此选项
(?这是一种方式。
请注意,只有当您的产品可能是一个短语时,才需要此选项
(??
表示可选。你可以使用它。你能把完整的语法放在这里吗。我一定是做错了什么。它不是那样工作的。你正在使用(?=\s-\s)
来限定产品。如果你将其设置为可选的(?=\s-\s)?
它永远不必匹配断言,而且很可能不会匹配。更好的方法是使用边界或空白指示符。您可以尝试(?如果产品名称总是由大写和小写字母组成,您可以做一些简单的事情,例如@sln:它只突出显示第一个字母?
表示可选。您可以使用它。您可以将完整语法放在这里。我一定是做错了什么。它不是这样工作的。您正在使用(?=\s-\s)
来限定产品。如果将其设置为可选的(?=\s-\s)?
它将永远不必与断言匹配,而且很可能不会匹配。更好的方法是使用边界或空白指示器。您可以尝试(?如果产品名称总是由大写字母和小写字母组成,您可以做一些简单的事情,例如@sln:它只突出显示第一个字母Perfect.第一次尝试成功。感谢slnPerfect.第一次尝试成功。感谢sln
6. ComprehensiveBolt
(?<= \d \. \s ) # This must be behind
(?: # -----------
(?! # Neg assertion
\s - \s # Not this ahead
| \d \. \s # Nor this ahead
)
. # Ok, grab this character
)+ # 1 to many times