如何从正则表达式搜索中排除某个单词?

发布于 2024-11-25 21:19:04 字数 337 浏览 0 评论 0原文

如何为以下问题创建正则表达式:

我有一个字符串,
name1=value1;name2=value2;.....;

在某个地方,存在一对, “开始=10072011;” 我需要使用正则表达式从字符串中解析所有 name=value;对,其中值为数字。但是,我想忽略名称 begin

目前我有以下正则表达式:

([\\w]+)=([\\d]+);

我选择 begin 名称。如何将其更改为不包含 begin

How I can create a regular expression for the following problem:

I have a string,
name1=value1;name2=value2;.....;

Somewhere, there exists a pair,
"begin=10072011;"
I need, with regular expressions, to parse from the string all name=value; pairs, where the value is a number. However, I want to ignore the name begin

Currently I have the following regexp:

([\\w]+)=([\\d]+);

Mine selects the begin name. How can I change it to not include begin?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

草莓酥 2024-12-02 21:19:04

(?!begin)\b(\w+)=(\d+);

这使用负向前查找,因此如果字符串以“begin”开头,则不会匹配。 \b 是必需的,以便正则表达式不只是跳过“b”并匹配“egin=...”。

请注意,在描述正则表达式时,您应该只使用单个反斜杠进行转义,尽管对于某些语言,您将需要使用双反斜杠来转义反斜杠。

(?!begin)\b(\w+)=(\d+);

This uses negative lookahead, so it will not match if the string starts with "begin". The \b is necessary so that the regex does not just skip the "b" and match "egin=...".

Note that when describing a regex you should only using a single backslash for escapes, although for some languages you will need to use double backslashes to escape the backslash.

遮了一弯 2024-12-02 21:19:04

应该这样做:

\b(?!begin=)(\w+)=(\d+)\b

作为 C++ 字符串文字,它看起来像这样:

"\\b(?!begin=)(\\w+)=(\\d+)\\b"

\b字边界;您使用它来确保匹配整个单词(因为“单词”是在正则表达式的上下文中定义的;请仔细阅读该页面)。例如,如果没有第一个 \b ,正则表达式将正确地无法匹配

begin=1234   // OK

......但随后它会向前跳过一个位置并匹配:

egin=1234    // oops!

This should do it:

\b(?!begin=)(\w+)=(\d+)\b

As aC++ string literal it would look like this:

"\\b(?!begin=)(\\w+)=(\\d+)\\b"

\b is a word boundary; you use it to make sure you're matching a whole word (as "word" is defined in the context of regexes; read that page carefully). For example, without the first \b the regex would correctly fail to match

begin=1234   // OK

...but then it would skip ahead one position and match:

egin=1234    // oops!
谁的年少不轻狂 2024-12-02 21:19:04

我认为 (?<=begin=)\d+(?=;) 将是更好的选择。

如果将所有信息都保留为 XML 格式,那么工作将会比现在容易得多。

I think (?<=begin=)\d+(?=;) will be a better choice.

If you keep all the information in XML format, the work will be much easier than now.

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