如何通过正则表达式设置第一个字符?
第一个字符可以是除等号 (=
) 之外的任何字符。
我制作了以下正则表达式:
[^=].
ab
、b2
等将通过,而=a
不会。
但问题是,我也想接受单个字符:
a
也应该被接受。我怎样才能做到这一点?
更新
你可能想知道我为什么要这样做。我有一个 URL 正则表达式
(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_: @=.+?,#%&~-]*[^.'#!()?, ><;])
但我不希望解析紧随其后的 URL =
字符。
The first character can be anything except an equals sign (=
).
I made the following regex:
[^=].
ab
, b2
etc will pass, and =a
will not.
But the thing is, I also want to accept single character:
a
should also be accepted. How can I do that?
Update
You might wonder why I'm doing it. I have a URL regex
(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])
but I don't want the URL to be parsed if it's right after the =
character.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
尝试负向前瞻:
^
匹配输入的开头,而(?!...)
是负向前瞻。它还匹配空字符串。Try a negative lookahead:
^
matches the start of the input, and(?!...)
is a negative look ahead. It also matches an empty string.如果这是您的正则表达式中的唯一约束,您应该尝试使用您正在使用的语言提供的 API 来获取字符串的第一个字符。
如果您确实想要正则表达式,请查看 @Bart 解决方案< /a>.
这是一种不前瞻的替代方案
/^([^=]|$)/
If this is the only constraint in your regex, you should try to use the API provided by the language you're working with to get the first character of a string.
If you really want a regex look at @Bart solution.
Here is an alternative without look ahead
/^([^=]|$)/
你不需要正则表达式。有 String.StartsWith...
You don't need RegEx. There is String.StartsWith...
锚定开始和结束,并使整个事情变得可选。
Anchor to the beginning and end, and make the whole thing optional.
难道你不能只使用
^=
并在代码中没有匹配项时采取行动吗?Couldn't you just use
^=
and act if there is no match in your code?