帮助正则表达式

时间:2011-07-19 22:18:57

标签: c# regex

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

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

我开发了这个正则表达式

Regex.Replace(htmlString, "field-*([0-9]|[1-9][0-9]|[1-9][0-9][0-9])", "|", RegexOptions.Singleline);   

但是当数字超过2位数时失败。表达式

有什么问题

3 个答案:

答案 0 :(得分:2)

尝试使用此尺寸

/field-[1-9]?[0-9]{1,2}/

如果C#正则表达式不支持大括号语法,这也应该有效。

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

如果您想要任意长号,可以使用

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

根据整个帖子的反馈,我们共同提出的最佳版本是:

field-(0|[1-9]\d{0,2})

这基本上是@PaperPRO在对我自己修改的另一个线程的评论中的贡献,以反映OP更新的要求(字段而不是fieldText)。

这些值:

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