C#Regex:捕捉到

C#Regex:捕捉到,c#,regex,string,C#,Regex,String,我想在一个字符串中捕获最多(不包括)一个符号的所有内容。#字符可能存在也可能不存在(如果不存在,则应捕获整个字符串) 正则表达式和C#代码将如何表示?我试过:([^#]+)(?:#)但似乎不起作用。试一下: .*(=#) 我认为这应该行得通 编辑: 代码: string match = Regex.Match(input,"^[^#]*").Value; 不是正则表达式,而是一种尝试的替代方法。虽然可以使用正则表达式,但对于这种特殊情况,我更喜欢这种方法 string mystring = "

我想在一个字符串中捕获最多(不包括)一个符号的所有内容。#字符可能存在也可能不存在(如果不存在,则应捕获整个字符串)

正则表达式和C#代码将如何表示?我试过:([^#]+)(?:#)但似乎不起作用。

试一下:

.*(=#)

我认为这应该行得通

编辑:

代码:

string match = Regex.Match(input,"^[^#]*").Value;

不是正则表达式,而是一种尝试的替代方法。虽然可以使用正则表达式,但对于这种特殊情况,我更喜欢这种方法

string mystring = "DFASDFASFASFASFAF#322323"; 
int length = (mystring.IndexOf('#') == -1) ? mystring.Length : mystring.IndexOf('#');
string new_mystring = mystring.Substring(0, length);

简单到:

[^#]*

就拿第一场比赛吧?

不太好,那将把所有的东西都匹配到最后一场。。我认为op希望所有事情都能在第一时间完成#@Michael Petito:所以。。。在
*
@OMG Unicorns之后添加一个
,因为在这种情况下使用惰性量词似乎是懒惰的!我更喜欢这样-有时有一个更简单的解决方案,而不需要正则表达式。我同意Philippe的观点,正则表达式的版本更具可读性。尽管正则表达式的版本只对知道如何读取正则表达式的人可读。@JohannesH:没错,但这可以通过代码中的一行注释轻松解决。在这种情况下,我更喜欢正则表达式。我猜这个正则表达式实际上是用来去除由#表示的行末注释,这在配置文件中很常用。如果是这样的话,一个更完整的表达式定义可能会去掉尾随的空格,这将更难用IndexOf和Substring实现(也不太清晰)。
[^#]*