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

C# 如何通过正则表达式设置第一个字符?

C# 如何通过正则表达式设置第一个字符?,c#,regex,url,regex-negation,C#,Regex,Url,Regex Negation,第一个字符可以是除等号以外的任何字符(=) 我制作了以下正则表达式: [^=]. ab,b2等将通过,而=a将不通过 但问题是,我还想接受单个字符: a也应被接受。我该怎么做 更新 你可能想知道我为什么要这么做。我有一个URL正则表达式 (?!=)((www.|(https?| ftp):/)[.a-z0-9-]+\.[a-z0-9/:@=.+?,#%&-]*[^.#!(),>尝试一种消极的前瞻: ^(?!=) ^匹配输入的开头,(?!…)是一个负向前瞻。它还匹配一个空字符串。锚定到开头和结

第一个字符可以是除等号以外的任何字符(
=

我制作了以下正则表达式:

[^=].
ab
b2
等将通过,而
=a
将不通过

但问题是,我还想接受单个字符:

a
也应被接受。我该怎么做

更新

你可能想知道我为什么要这么做。我有一个URL正则表达式


(?!=)((www.|(https?| ftp):/)[.a-z0-9-]+\.[a-z0-9/:@=.+?,#%&-]*[^.#!(),>尝试一种消极的前瞻:

^(?!=)

^
匹配输入的开头,
(?!…)
是一个负向前瞻。它还匹配一个空字符串。

锚定到开头和结尾,并使整个内容成为可选内容

^(?:[^=].*)?$

如果代码中没有匹配项,您就不能使用
^=
并执行操作吗?

如果这是正则表达式中的唯一约束,您应该尝试使用您正在使用的语言提供的API来获取字符串的第一个字符

String s = "myString";
if(s.Length == 0 || s[0] != '=')
    //Your code here

如果你真的想要一个正则表达式看看

这里是一个没有前瞻性的替代方案
/^([^=]|$)/


^您不需要正则表达式。有


你怎么知道这里需要一个perl正则表达式?:)@Benoit,它是一个PCRE语法,因此不仅受perl.PHP、Java、JavaScript、Python等支持。所有这些都支持我上面发布的语法。我想这几乎就是我需要的。然而,“^(?!=)aa”不接受“aa”,我也需要接受空格。所以我认为“^”不应该在正则表达式中。您可能想知道我为什么要这样做。我有一个URL正则表达式,但如果URL正好在“=”字符之后,我不希望对其进行分析。@Alex,
^(?!=)aa
只匹配以
aa
开头的字符串(在这种情况下甚至不需要向前看)。我不明白你为什么要在正则表达式中添加
aa
。好的,我通过稍微修改一下你的解决方案解决了这个问题。谢谢!你用的是什么语言?C#?Ruby?抱歉,没有提及,C#
^        <- Starts with
(        <- Start of a group
  [^=]     <- Any char but =
  |        <- Or
  $        <- End of the match
)        <- End of the group
if ( ! theString.StartsWith("=") ) {
   ...