C# 正则表达式帮助

C# 正则表达式帮助,c#,regex,C#,Regex,我试图为这个pattron创建一个正则表达式 field-122 <--the number could be into 0 to 999 但当数字超过2位数时失败。表达式中有什么错误我不确定,但您没有搜索单词test,而是搜索0或更多的-。数字捕获部分过于复杂。尝试: "fieldText-(\\d{1,3})" 我不确定,但您不是在搜索单词test,而是在搜索0或更多的-。数字捕获部分过于复杂。尝试: "fieldText-(\\d{1,3})" 根据本线程中的反馈,我们共同提出

我试图为这个pattron创建一个正则表达式

field-122 <--the number could be into 0 to 999

但当数字超过2位数时失败。表达式中有什么错误我不确定,但您没有搜索单词test,而是搜索0或更多的
-
。数字捕获部分过于复杂。尝试:

"fieldText-(\\d{1,3})"

我不确定,但您不是在搜索单词test,而是在搜索0或更多的
-
。数字捕获部分过于复杂。尝试:

"fieldText-(\\d{1,3})"

根据本线程中的反馈,我们共同提出的最佳版本是:

field-(0|[1-9]\d{0,2})
这基本上是@PaulPRO在对另一个线程的评论中的贡献,该线程由我修改,以反映OPs更新的需求(字段而不是字段文本)

对于这些值:

field-122
field-1
field-55
field-999
field-0
field-001
field-01
field-0
field--
field---
field--anything you want here
但不是这些价值观:

field-122
field-1
field-55
field-999
field-0
field-001
field-01
field-0
field--
field---
field--anything you want here
部分匹配:

anything you want herefield-123

根据本线程中的反馈,我们共同提出的最佳版本是:

field-(0|[1-9]\d{0,2})
这基本上是@PaulPRO在对另一个线程的评论中的贡献,该线程由我修改,以反映OPs更新的需求(字段而不是字段文本)

对于这些值:

field-122
field-1
field-55
field-999
field-0
field-001
field-01
field-0
field--
field---
field--anything you want here
但不是这些价值观:

field-122
field-1
field-55
field-999
field-0
field-001
field-01
field-0
field--
field---
field--anything you want here
部分匹配:

anything you want herefield-123

试试这件衣服的尺寸

/field-[1-9]?[0-9]{1,2}/
如果C#正则表达式不支持花括号语法,这也应该可以

/field-[1-9]?[0-9]?[0-9]/
如果需要任意长的数字,可以使用

/field-[1-9]?[0-9]+/

作为参考,
表示零或一,
+
表示一个或多个
{n,m}
表示至少n个,最多m个,试试这件衣服的尺寸

/field-[1-9]?[0-9]{1,2}/
如果C#正则表达式不支持花括号语法,这也应该可以

/field-[1-9]?[0-9]?[0-9]/
如果需要任意长的数字,可以使用

/field-[1-9]?[0-9]+/

作为参考,
表示零或一,
+
表示一个或多个
{n,m}
表示至少n,最多m

如果要避免fieldText-01,则需要添加一个负前瞻<代码>“fieldTest-(?!0\d)(\\d{1,3})”只要输入有效就正确,但允许001和01。基本上以零开始的数字。这取决于这是否是一个有效的替代方案?我怀疑这是个问题,但你永远不知道人们在用东西干什么。是的,我对你不是小气,只是想在他们使用它之前向OP指出,而没有意识到。正则表达式非常具体,在你看到你不想要的东西之前,你并不总是知道你想要什么:)从他们最初的例子来看,他们似乎希望两位或三位数字以1开头,不包括001 etcThanks:)我认为他想要接受的唯一拒绝的是fieldText-0。因此,可以对其进行更改以解释:
“fieldText-(0 |[1-9]\d{0,2})”
如果要避免使用fieldText-01,则需要添加一个负前瞻<代码>“fieldTest-(?!0\d)(\\d{1,3})”只要输入有效就正确,但允许001和01。基本上以零开始的数字。这取决于这是否是一个有效的替代方案?我怀疑这是个问题,但你永远不知道人们在用东西干什么。是的,我对你不是小气,只是想在他们使用它之前向OP指出,而没有意识到。正则表达式非常具体,在你看到你不想要的东西之前,你并不总是知道你想要什么:)从他们最初的例子来看,他们似乎希望两位或三位数字以1开头,不包括001 etcThanks:)我认为他想要接受的唯一拒绝的是fieldText-0。因此可以对其进行更改以解释:
“fieldText-(0 |[1-9]\d{0,2}”
注意:如果您试图从文本体中提取,请从开头和结尾处删除^和$。这与
field-100
@haydenmuhl-我刚刚在Expresso中检查了这一点,它验证了
field-100
:)注意:如果您试图从文本体中提取,请从开头和结尾处删除^和$。这将不匹配
field-100
@haydenmuhl-我刚刚在Expresso中检查了它,它验证了
field-100
:)