Как я могу получить результаты группы 1 совпадения регулярных выражений в сценарии Java, в то время как я не могу объявить строку? - PullRequest
0 голосов
/ 08 июня 2019

вот демо regex

РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ

getObj\("Frm_Logintoken"\).value = "(.*)";

это строка теста

getObj("Frm_Logintoken").value = "3";

я хочу получить эточисло только «3» без кавычек

он находится в группе 1 матчей, но я не знаю, как получить его из этой группы.

я не могу изменить что-то myString = "что-тоformat_abc ";

, потому что я делаю это, чтобы получить значение, которое я не знаю !!

И тестирование этого в результатах консоли

var test = / getObj ("Frm_Logintoken"). Value = "(. *)"; / G

undefined

console.log (test 1 );undefined undefined

тот же вопрос, но по-другому и подробно все еще без ответа

я пытался

getObj\("Frm_Logintoken"\).value = "(.*)";`.match(/getObj\("Frm_Logintoken"\).value = "(.*)";/)[1]

это даст мне это "(. *) "не требуемое значение !!!

некоторые примечания

1 - это значение не является статическим

2 - я хочу, чтобы код работал автоматически, поэтомуизвлечение строки "getObj (" Frm_Logintoken "). value =" 3 ";"из кода страницы вручную это нежелательная вещь.

3 - я хочу сделать сценарий автоматического входа без какого-либо вмешательства пользователя.

4 - если вы все еще не понимаете вопрос, см. ссылкипожалуйста

спасибо

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

вы должны сначала объявить строку!

, поэтому, если вы пытаетесь получить значение из HTML-кода текущей страницы, вы можете просто

let str = document.body.innerHTML;
let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
console.log(str.match(pattern)[1]); 

иесли вы пытаетесь получить html-строку с другой страницы, используя что-то вроде XMLHttpRequest

, вы можете сделать это

let str = (http.responseText);

полный код:

const http = new XMLHttpRequest();
const url = 'http://page/';
http.open('get', url, false);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

  http.onreadystatechange = function ()
    {
        if(http.readyState === 4)
        {
            if(http.status === 200 || http.status == 0)
            {
                let str = (http.responseText);
                let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
                let results = str.match(pattern)[1];
                    console.log(results);
            }

        }
    }

http.send();

Надеюсь, выв следующий раз поймите и задайте более четкий вопрос и напишите свою истинную точку зрения на вопрос и использование требуемого исправления.

0 голосов
/ 08 июня 2019

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

let str = `getObj("Frm_Logintoken").value = "3";`

let op = str.match(/getObj\("Frm_Logintoken"\).value = "(.*)";/)

console.log(op[1])
...