RegEx 用于捕获字符串中的数字
Posted
技术标签:
【中文标题】RegEx 用于捕获字符串中的数字【英文标题】:RegEx for capturing digits in a string 【发布时间】:2019-10-10 03:50:28 【问题描述】:我希望仅提取此“=»”之后的数字,但我也不断有一些其他文本:
正则表达式代码:
[^»]*[\d1,]$
输入
> login as: LOGIN SERVER@00.00.00.000's password: Last login: Thu May 23
> 15:51:49 2019 from 00.00.00.000 CREER AUTANT DE REPERTOIRES SOUS
> /NAME/NAME/NAME QU'IL Y A DE COMMERCANTS GERES. LE NOM DOIT ETRE LE NO
> DE COMMERCANT. CREER ENSUITE SOUS CHACUN D'EUX UN REPERTOIRE NAME/
> <SERVER>ps -fu NAME | grep exe | echo «resultat=»`wc -l` «resultat=»14
> <SERVER>
我该如何解决这个问题?
【问题讨论】:
请直接在您的问题中发布您的代码,而不是链接。链接变得陈旧,因此问题对于将来遇到问题的人来说毫无用处。 我现在贴在这里,我之前用过一个链接...[^»]*([\d1,])
为您的帖子返回 14
...
@Michael 不,它不会,它也会返回其他信息......
【参考方案1】:
你的表情很接近。我们可能只想将=»
作为左边界,然后用([0-9]+)
收集我们的数字,这可能会奏效:
=»([0-9]+)
正则表达式
如果不需要此表达式,可以在 regex101.com 中修改或更改它。
正则表达式电路
jex.im 可视化正则表达式:
测试
using System;
using System.Text.RegularExpressions;
public class Example
public static void Main()
string pattern = @"=»([0-9]+)";
string input = @"> login as: LOGIN SERVER@00.00.00.000's password: Last login: Thu May 23
> 15:51:49 2019 from 00.00.00.000 CREER AUTANT DE REPERTOIRES SOUS
> /NAME/NAME/NAME QU'IL Y A DE COMMERCANTS GERES. LE NOM DOIT ETRE LE NO
> DE COMMERCANT. CREER ENSUITE SOUS CHACUN D'EUX UN REPERTOIRE NAME/
> <SERVER>ps -fu NAME | grep exe | echo «resultat=»`wc -l` «resultat=»14
> <SERVER>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
Console.WriteLine("'0' found at index 1.", m.Value, m.Index);
演示
const regex = /=»([0-9]+)/gm;
const str = `> login as: LOGIN SERVER@00.00.00.000's password: Last login: Thu May 23
> 15:51:49 2019 from 00.00.00.000 CREER AUTANT DE REPERTOIRES SOUS
> /NAME/NAME/NAME QU'IL Y A DE COMMERCANTS GERES. LE NOM DOIT ETRE LE NO
> DE COMMERCANT. CREER ENSUITE SOUS CHACUN D'EUX UN REPERTOIRE NAME/
> <SERVER>ps -fu NAME | grep exe | echo «resultat=»\`wc -l\` «resultat=»14
> <SERVER>`;
let m;
while ((m = regex.exec(str)) !== null)
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex)
regex.lastIndex++;
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) =>
console.log(`Found match, group $groupIndex: $match`);
);
【讨论】:
这返回两个值,我只需要 14 Full match=»14 Group 1. 14 @mz3bel 你可以用c#从=»14
中提取14
。【参考方案2】:
方括号中的字符表示“其中一个字符”,所以它是 ?或 » 后跟一个数字或 、 1 、 或 。
正向后视在这里是最有用的(匹配 X 之后的内容。)
(?
所以:
(?
一个或多个数字前面有一个 » ,但不要捕获 »
【讨论】:
以上是关于RegEx 用于捕获字符串中的数字的主要内容,如果未能解决你的问题,请参考以下文章