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("=") ) {
...