Получить пользователя из спулинга с помощью регулярных выражений - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно получить полевого пользователя из этого файла спула

(********* TOP SEPARATOR ***************************************\
*****************) 48 Tj
0 -1.1 Td
(*        REPORT = COURR QRCODE MOB                             \
 USER = BINM3   *) 48 Tj
0 -2.2 Td
(*        DESC.  = COURRIER E-CLIENT QR CODE MOBILE             \
 FORM = 72A2    *) 48 Tj
0 -3.3 Td
(*        CAPTURE DATE  = 15/05/19 \(19.135\)   TIME = 14.30.45 \
       \(VTUB001 \) *) 48 Tj
0 -4.4 Td
(************************************                           \

TEST
FILE
TEST
FILE

(********* END SEPARATOR ***************************************\
*****************) 48 Tj
0 -1.1 Td
(*        REPORT = COURR QRCODE MOB                             \
 USER = BINM3   *) 48 Tj
0 -2.2 Td
(*        DESC.  = COURRIER E-CLIENT QR CODE MOBILE             \
 FORM = 72A2    *) 48 Tj
0 -3.3 Td
(*        CAPTURE DATE  = 15/05/19 \(19.135\)   TIME = 14.30.45 \
       \(VTUB001 \) *) 48 Tj
0 -4.4 Td
(************************************     

                  \

Я использую это

(?<=USER = ).*?(?=\s)

Но у меня есть 2 результата, и мне нужен только один, первый

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

1 Ответ

0 голосов
/ 16 мая 2019

Это выражение может быть не самым быстрым, однако оно возвращает желаемый результат во второй группе захвата:

(.*)USER = ([^\s]+)([\s\S]*)

Если вы хотите, вы можете добавить больше границ, например, список символов вместо ([^\s]+) или, возможно, начальный и конечный символы :

^(.*)USER = ([^\s]+)([\s\S]*)$

enter image description here

Демо

JavaScript Demo

const regex = /(.*)USER = ([^\s]+)([\s\S]*)/gm;
const str = `(********* TOP SEPARATOR ***************************************\\ *****************) 48 Tj 0 -1.1 Td (* REPORT = COURR QRCODE MOB \\ USER = BINM3 ) 48 Tj 0 -2.2 Td ( DESC. = COURRIER E-CLIENT QR CODE MOBILE \\ FORM = 72A2 ) 48 Tj 0 -3.3 Td ( CAPTURE DATE = 15/05/19 (19.135) TIME = 14.30.45 \\ (VTUB001 ) *) 48 Tj 0 -4.4 Td (************************************ \\

TEST FILE TEST FILE

(********* END SEPARATOR ***************************************\\ *****************) 48 Tj 0 -1.1 Td (* REPORT = COURR QRCODE MOB \\ USER = BINM3 ) 48 Tj 0 -2.2 Td ( DESC. = COURRIER E-CLIENT QR CODE MOBILE \\ FORM = 72A2 ) 48 Tj 0 -3.3 Td ( CAPTURE DATE = 15/05/19 (19.135) TIME = 14.30.45 \\ (VTUB001 ) *) 48 Tj 0 -4.4 Td (************************************ \\`;
const subst = `$2`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

RegEx Circuit

Вы также можете визуализировать свои выражения в jex.im :

enter image description here

...