Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2013, 18:10
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

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

Есть абзац с текстом, например такой:

[ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
[ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
strength(15)|agility(5)|intellect(4)|charisma(14)| level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2), knows_trade_12|knows_prisoner_management_1|knows_i nventory_management_2|knows_shield_10|knows_weapon _master_1|knows_power_throw_10|knows_ironflesh_1,
0x0000000000000001124000000020000000000000001c0080 0000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc 0000000000000000, 0,
52 ]

Это кусок текста, перед которым и после еще много текста. Из этого абзаца необходимо в переменные присвоить значения.
var units = "sarleon_recruit"
1) нужно найти в тексте переменную units, затем получить строковые значения что идут до закрывающейся квадратной скобки "]". Т.е это "itm_ankle_boots" "itm_leather_jacket" "itm_linen_tunic" и так далее. Эти значения всегда начинаются с "itm_". Поиск заканчивается при нахождении символа "]" Получиться должно, наверное, что-то вроде: itm_01="itm_ankle_boots" itm_02="itm_leather_jacket" и так далее.
2) нужно найти переменную "units" затем найти слово "strenght" и получить значение что в скобках(15); по аналогии, думаю, я сам смогу додумать и найти другие значения
3) нужно найти переменную "units" затем нужно найти строковые значения переменных что начинаются с "knows_", например "knows_trade_12" "knows_prisoner_management_1" "knows_inventory_management_2". Поиск нужно производить до символов "0x0". В принципе, этот поиск похож на 1 вариант, но я боюсь не найду сам где и что нужно поменять, чтобы искалось то, что нужно.
В идеале, получиться должно что-то вроде
var sarleon_recruit_knows_trade = 12;
var sarleon_recruit_knows_prisoner_management = 1;

Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2013, 20:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от фонарик
Это кусок текста, перед которым и после еще много текста.
А какова уникальность этого текста, в отличии текста до и после?
Наличие Квадратных скобок ?
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2013, 20:38
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Сообщение от Deff Посмотреть сообщение
А какова уникальность этого текста, в отличии текста до и после?
Не знаю как ответить на вопрос, приложил файлик, откройте его блокнотом, он текстовый
Вложения:
Тип файла: zip module_troops.zip (50.4 Кб, 8 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2013, 22:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от фонарик
приложил файлик, откройте его блокнотом, он текстовый
В выложенном коде нет переменной units
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2013, 00:29
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Переменной units в первом посте я присваивал значение "sarleon_recruit", это значение есть в файле что в архиве. Кусок текста что в первом посте как раз из этого файла что в архиве
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2013, 01:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Запутал... лан будем искать, по тому, что в топике
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2013, 14:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<div id="Text">
sdffffffffffffffff [ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
 [ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
 strength(15)|agility(5)|intellect(4)|charisma(14)| level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2), knows_trade_12|knows_prisoner_management_1|knows_i nventory_management_2|knows_shield_10|knows_weapon _master_1|knows_power_throw_10|knows_ironflesh_1,
 0x0000000000000001124000000020000000000000001c0080 0000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc 0000000000000000, 0,
 52 ]sdfffffdsffffffffffff
</div>



<script>
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var arr2=str.split(/[\s\S]*?((?:"sarleon_recruit")[\s\S]*?\])/img)[1].split(/\[|\]/img)[1].split(",");arr2.pop();

alert(arr2); //Массив в квадратных скобках за "sarleon_recruit";

var arr3=str.split(/[\s\S]*?((?:"sarleon_recruit")[\s\S]*?(?=0x000))/img)[1].split(/(strength)/img);arr3.splice(0,1);
arr3 = arr3.join('').split(/knows_/)[0].split(/[,|]/img);arr3.pop();

alert(arr3); //Массив от strength до "knows_";

var arr4=str.split(/[\s\S]*?((?:"sarleon_recruit")[\s\S]*?(?=0x000))/img)[1].split(/(knows_.*?)[|,]/img);arr4.splice(0,1);
arr4=arr4.join(',').split(/,+/img);arr4.pop();

alert(arr4) //Массив с "knows_";

</script>

Последний раз редактировалось Deff, 10.03.2013 в 14:55.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2013, 16:21
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Вот это да Мистер Deff, не знаю я что вы принимаете для решения таких задач, но ведь все правильно, все работает С такими способностями, вы наверно миллионер уже давно Спасибо вам огромное, благодарности нет границ

Вычленить из массивов нужные значения я сумею, остается лишь из этого значения, например, strenght(15) или agility(5) , достать значения из скобок. Полагаю, начинается оно так:
var AttStr = "strenght(15)" // или arr3[0] из примера
var arr=AttStr.split(а тут заклинание);
alert(arr);
Подскажите, пожалуйста, заклинание

Правда, понадобится еще и из массива с "knows_" достать последие цифровые значения. Мне кажется, этот вариант не похож будет на предыдущий.
var AttStr2 = "knows_trade_12" // или arr4[0] из примера
var arr2=AttStr2.split(а тут заклинание);
alert(arr);
Пожалуйста, помогите наколдовать нужное, очень надеюсь что у вас манна еще не закончилась ))
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2013, 17:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function retNumb(a){
 var Numb = +a.replace(/[^\d]*(\d+)[^\d]*$/,'$1');
 return Numb;
}

var AttStr = "strenght(15)"
var AttStr2 = "knows_trade_12" //

alert(retNumb(AttStr));
alert(retNumb(AttStr2));

Последний раз редактировалось Deff, 10.03.2013 в 17:45.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2013, 17:43
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Век жизни вам и здоровья, госодин Deff Большое спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения alex2012 Общие вопросы Javascript 5 23.02.2013 19:49
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
Регулярные выражения vivalaakam Общие вопросы Javascript 6 08.02.2012 09:41
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35