RegEx для ввода цифр в строку - PullRequest
0 голосов
/ 23 мая 2019

Я хочу извлечь только цифры после этого "=» ", но у меня тоже есть какой-то другой текст:

Код регулярного выражения:

[^»]*[\d{1,}]$

Ввод

> 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>

Как мне решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 23 мая 2019

Ваше выражение довольно близко.Мы могли бы просто захотеть иметь в качестве левой границы, а затем собрать наши цифры с помощью ([0-9]+), и это, вероятно, сработает:

=»([0-9]+)

enter image description here

RegEx

Если это выражение нежелательно, его можно изменить или изменить в regex101.com .

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here

Test

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);
        }
    }
}

Demo

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}`);
    });
}
1 голос
/ 24 мая 2019

Символы в квадратных скобках означают «один из этих символов», так?или », за которым следует цифра или {, 1, или}.

Позитивный взгляд сзади является наиболее полезным здесь (соответствует чему-то, что идет после X.)

(? <=что-то) thingIWantToMatch </p>

Итак:

(? <= ») \ d + </p>

Одна или несколько цифр, перед которыми стоит», ноне захватывай »

...