Вот простой пример, который я разработал на основе http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_averages
Обратите внимание, что в отличие от их таблицы, я не вычисляю SMA, и я не жду, чтобы создать EMA после 10 выборок. Это означает, что мои значения немного отличаются друг от друга, но если вы его нарисуете, то это будет точно после 10 образцов. Во время первых 10 выборок EMA, которые я вычисляю, соответствующим образом сглаживается.
def emaWeight(numSamples):
return 2 / float(numSamples + 1)
def ema(close, prevEma, numSamples):
return ((close-prevEma) * emaWeight(numSamples) ) + prevEma
samples = [
22.27, 22.19, 22.08, 22.17, 22.18, 22.13, 22.23, 22.43, 22.24, 22.29,
22.15, 22.39, 22.38, 22.61, 23.36, 24.05, 23.75, 23.83, 23.95, 23.63,
23.82, 23.87, 23.65, 23.19, 23.10, 23.33, 22.68, 23.10, 22.40, 22.17,
]
emaCap = 10
e=samples[0]
for s in range(len(samples)):
numSamples = emaCap if s > emaCap else s
e = ema(samples[s], e, numSamples)
print e
регулярное выражение в вопросе промахи много из пограничных случаев. При обнаружении URL всегда лучше пользоваться специализированной библиотекой, которая обрабатывает международные доменные имена, новый TLDs как .museum
, круглые скобки и другая пунктуация в и в конце URL и многих других пограничных случаев. Посмотрите сообщение в блоге Jeff Atwood проблема С URL для объяснения некоторых из других проблем.
<час>лучшая сводка библиотек соответствия URL находится в [1 117] , Ответ Dan Dascalescu
(по состоянию на февраль 2014)
Добавляют "g" до конца регулярного выражения для включения глобального соответствия:
/ig;
, Но который только решает проблему в вопросе, где регулярное выражение только заменяло первое соответствие. не используют тот код.
Мне пришлось сделать обратное, и сделать HTML-ссылки просто URL-адресом, но я изменил ваше регулярное выражение, и это работает как шарм, спасибо :)
var exp = /<a\s.*href=['"](\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])['"].*>.*<\/a>/ig; source = source.replace(exp,"$1");
Спасибо, это было очень полезно. Я также хотел что-то, что будет связывать вещи, которые выглядели как URL-адрес - как основное требование, это связало что-то вроде www.yahoo.com, даже если http: // Protocol Prefix отсутствует. Так что в основном, если «www». Присутствует, это свяжет это и предполагает, что это http: //. Я также хотел электронные письма, чтобы превратиться в Mailto: ссылки. Пример: www.yahoo.com будет преобразован в www.yahoo.com
Вот код, который я закончил (комбинация кода с этой страницы и других вещей, которые я нашел в Интернете, и другие вещи, которые я сам сделал):
function Linkify(inputText) {
//URLs starting with http://, https://, or ftp://
var replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
var replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');
//URLs starting with www. (without // before it, or it'd re-link the ones done above)
var replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
var replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>');
//Change email addresses to mailto:: links
var replacePattern3 = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
var replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>');
return replacedText
}
В 2-м замене (^ | [^]) часть заменяет только www.whatever.com, если он еще не префиксируется // - чтобы избежать двойного связывания, если URL уже был связан в первом заменять. Кроме того, возможно, что www.whatever.com может быть в начале строки, которая является первым «или» состоянием в этой части Regex.
Это может быть интегрировано как плагин jQuery, как jesse P, проиллюстрированное выше - но я специально хотел регулярной функции, которая не действовала на существующем элементе DOM, потому что я принимаю текст, и затем добавляю его в Дом, и я хочу, чтобы текст был «связывающим», прежде чем добавить его, поэтому я передаю текст через эту функцию. Работает отлично.
обычно можно изменить/переопределить обработчик исключений с разделением на ноль, если у вас есть доступ к подпрограммам обработчика исключений. в случае ARM разделение выполняется библиотечной подпрограммой. и существуют механизмы для информирования пользовательского кода, когда происходит деление на ноль.
см. http://infocenter.arm.com/help/index.jsp?topic =/com.arm.doc.faqs/ka4061.html
я бы предложил предоставить __rt_raise (), как сказано на странице выше.
_ rt _ raise (2,2) будет вызываться, когда подпрограмма деления обнаруживает деление на ноль. таким образом, можно распечатать регистр LR. а затем использовать addr2line для перекрестной ссылки на исходную линию
-121--3223149-Посмотрите на
-121--3090677-Обнаружение электронной почты в ответе Травитрона выше не сработало для меня, поэтому я расширил/заменил его следующим (код C #).
// Change e-mail addresses to mailto: links.
const RegexOptions o = RegexOptions.Multiline | RegexOptions.IgnoreCase;
const string pat3 = @"([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,6})";
const string rep3 = @"<a href=""mailto:$1@$2.$3"">$1@$2.$3</a>";
text = Regex.Replace(text, pat3, rep3, o);
Это позволяет использовать такие адреса электронной почты, как " firstname.secondname@one.two.three.co.uk ".
Лучший скрипт для этого: http://benalman.com/projects/javascript-linkify-process-lin/