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

发布于 2024-09-27 22:15:08 字数 454 浏览 2 评论 0原文

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

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

[^=].

abb2等将通过,而=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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

聚集的泪 2024-10-04 22:15:08

尝试负向前瞻:

^(?!=)

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

Try a negative lookahead:

^(?!=)

^ matches the start of the input, and (?!...) is a negative look ahead. It also matches an empty string.

梦在夏天 2024-10-04 22:15:08

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

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

如果您确实想要正则表达式,请查看 @Bart 解决方案< /a>.

这是一种不前瞻的替代方案 /^([^=]|$)/

^        <- Starts with
(        <- Start of a group
  [^=]     <- Any char but =
  |        <- Or
  $        <- End of the match
)        <- End of the group

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.

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

If you really want a regex look at @Bart solution.

Here is an alternative without look ahead /^([^=]|$)/

^        <- Starts with
(        <- Start of a group
  [^=]     <- Any char but =
  |        <- Or
  $        <- End of the match
)        <- End of the group
策马西风 2024-10-04 22:15:08

你不需要正则表达式。有 String.StartsWith...

if ( ! theString.StartsWith("=") ) {
   ...

You don't need RegEx. There is String.StartsWith...

if ( ! theString.StartsWith("=") ) {
   ...
忘你却要生生世世 2024-10-04 22:15:08

锚定开始和结束,并使整个事情变得可选。

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

Anchor to the beginning and end, and make the whole thing optional.

^(?:[^=].*)?$
荆棘i 2024-10-04 22:15:08

难道你不能只使用 ^= 并在代码中没有匹配项时采取行动吗?

Couldn't you just use ^= and act if there is no match in your code?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文