Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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 - Fatal编程技术网

C# 匹配以已知字符串开头的数字,后跟未知数量的字符

C# 匹配以已知字符串开头的数字,后跟未知数量的字符,c#,regex,C#,Regex,[一些单词:200:1000] 尝试仅匹配最后的1000部分。这两个数字都是可变的,可以包含未知数量的字符(虽然它们应该包含数字,但我不能排除它们也可能包含其他字符)。SOME_WORDS部分是已知的,不会更改 因此,我首先对[一些单词:进行正向后向查找,然后对后面的]进行正向前向查找。 这就给了我们一个模式(?你通常不能在回顾中使用+或*,而只能在前瞻中使用。 如果c确实允许这些,那么您可以使用*?而不是*,因为*将吃掉第二个: 试试这个: (?您通常不能在向后看中使用+或*,而只能在向前看中

[一些单词:200:1000]

尝试仅匹配最后的
1000
部分。这两个数字都是可变的,可以包含未知数量的字符(虽然它们应该包含数字,但我不能排除它们也可能包含其他字符)。SOME_WORDS部分是已知的,不会更改

因此,我首先对
[一些单词:
进行正向后向查找,然后对后面的
]进行正向前向查找。


这就给了我们一个模式
(?你通常不能在回顾中使用
+
*
,而只能在前瞻中使用。 如果c确实允许这些,那么您可以使用
*?
而不是
*
,因为
*
将吃掉第二个

试试这个:
(?您通常不能在向后看中使用
+
*
,而只能在向前看中使用。 如果c确实允许这些,那么您可以使用
*?
而不是
*
,因为
*
将吃掉第二个

试试这个:
(?正如Robert Smit提到的,这是因为
*
是一个贪婪的运算符。贪婪运算符在第一次匹配时尽可能多地消耗字符。只有在匹配失败时才会放弃字符。如果您使贪婪运算符懒惰(
*?
),则匹配将使用尽可能少的字符数以使匹配成功,因此
不会被
*使用。
您也可以使用
[^:]*
匹配除
以外的任何字符:

正如Robert Smit提到的,这是因为
*
是一个贪婪的操作符。贪婪的操作符在第一次匹配时会消耗尽可能多的字符。如果匹配失败,他们只会放弃字符。如果你让贪婪的操作符懒惰(
*?
),则匹配将使用尽可能少的字符数以使匹配成功,因此
不会被
*。
您也可以使用
[^:::*
来匹配除

以外的任何字符,简单地回答“不”。为什么不这样做呢:
\[一些单词:\d+:(\d+)]
?或者即使你不能保证数字是数字,也可以这样做:
\[一些单词:.+:(.+)\]
@Garry你可以试试这个
(?@AvinashRaj不确定那是不是有效的regexto简单地回答,不。为什么不这样做:
\[一些单词:\d+:(\d+)\]
?或者即使你不能保证数字是数字:
\[一些单词:+:(。+)\]
@Garry你可以试试这个
(?@AvinashRaj不确定那是有效的正则表达式