Поиск текста с помощью регулярных выражений
Есть строка "math.sin()" Нужно находить только sin и только тогда когда пред ним math. а после (
(?:math\.)\w+(?:\() находит math.sin( подскажите где ошибка. |
Цитата:
alert("test math.sin() sin tmp.sin math.sin".replace(/math\.sin\(/,'math.xxx(')) |
Нет, не то. Я наверно не точно выразился. Есть много классов и один из них например math и он имеет десятки функций math.sin, math.cos, math.tang и т. д. И мне нужно чтобы находились только названия функций этих классов.
Пример: math.sin() math.cos() math.Pi //константа random.get() random.set() на выходе только функции sin cos get set пример кода reg = text.match(/(?:math\.)(\w+\s*)(?=\()/gi); alert(reg[1]) Как можно записать этот код используя регулярные выражения? Дело в том, что нужно передать только строку с р.в. без кода JavaScript. |
Цитата:
Убрать последнюю скобку ещё можно( /math\.\w+(?=\()/g ), но в целом не получится. Реальные задачи решаются гораздо проще. |
Вариант
for (var str = "math.sin() math.cos() math.Pi random.get() random.set() ", re = /(math|random)\.(\w+)[()]{2}/g, a = []; re.exec(str) != null;) a.push(RegExp.$2); alert(a); |
Для разнообразия: :D
aray = [] while(/(math|random)\.(\w+)[()]{0,2}/g.exec('math.sin() math.cos() math.Pi random.get() random.set()') != null) { aray.push(RegExp.$2) } alert(aray); var aray = []; 'math.sin() math.cos() math.Pi random.get() random.set()'.replace(/(math|random)\.(\w+)[()]{0,2}/g, function(a, b, c) { return aray.push(c) }) alert(aray); |
Ууу, набижали. Поциенту требуется одной match строкой.
|
Цитата:
Есть файл ядра и файлы с описанием языков. Файл описания языка содержит список ключевых слов и регулярных выражений которые предаются в ядро. Забивать все ключевые слова напряжно, там только констант больше четырех сотен, а функций еще больше. Может кто разбирался в этом SyntaxHighlightere |
Часовой пояс GMT +3, время: 09:44. |