Заменить только первый символ строки на str_replace?

Обсуждение¶

Поиск и замена – типичная задача обработки текста. Представленное выше решение – это самая прямолинейная реализация, написанная на чистом XSLT. У читателя может возникнуть мысль, что производительность такого решения недостаточна. Ведь для каждого выхождения искомой строки вызываются функции , и . Вполне вероятно, что каждая из этих функций повторно просматривает всю входную строку в поисках искомой. И, стало быть, при таком подходе выполняется на два поиска больше, чем необходимо. Немного поразмыслив, вы можете найти решения, показанные в примерах 2.4 и 2.5, которые на первый взгляд представляются более эффективными.

Пример 2.4. Использование временной строки в неудачной попытке улучшить производительность поиска и замены

Пример 2.5. Использование временного целого в неудачной попытке улучшить производительность поиска и замены

Идея обоих вариантов одна и та же: если запомнить, где функция нашла соответствие, то можно воспользоваться этой информацией для того, чтобы не вызывать функции и . Но мы вынуждены обращаться к функции , чтобы выделить случай, когда возвращает пустую строку; такое может случиться, если искомая строка отсутствует или исходная строка начинается с искомой.

Впрочем, , вероятно, работает быстрее, чем , поскольку ей не нужно просматривать больше символов, чем содержится в искомой строке. Второй вариант отличается от первого предположением, что сохранение целочисленного смещения может оказаться эффективнее сохранения подстроки целиком.

Увы, ни одна из этих оптимизаций не дает никакого выигрыша при использовании процессора XSLT Xalan. Более того, при некоторых входных данных реализации Saxon и XT показывают на порядок большее время работы! Столкнувшись с этим парадоксальным результатом, я сначала предположил, что использование переменной в рекурсивном вызове как-то препятствует оптимизации хвостовой рекурсии в Saxon (см. рецепт 2.6). Однако, экспериментируя с длинными входными строками, в которых искомая строка встречается много раз, я не сумел вызвать переполнение стека. Тогда я заподозрил, что по какой-то причине функция в XSLT работает медленнее, чем и .

Майкл Кэй, автор реализации Saxon, указал, что действительно работает медленно из-за сложных правил, которые приходится поддерживать, в том числе округления аргументов с плавающей точкой, обработки особых случаев, когда начальная или конечная точки оказываются за границами строки, и вопросов, связанных с суррогатными парами Unicode. Напротив, функции
и гораздо лучше транслируются на язык Java.

Отсюда следует извлечь урок: оптимизация – дело непростое, особенно в XSLT, когда имеются существенные различия между реализациями, а в новых версиях авторы стараются применить дополнительные оптимизации. Если вы не готовы часто профилировать программу, то лучше ограничиться простыми решениями.

К числу достоинств простых решений можно отнести и то, что, скорее всего, они будут вести себя одинаково в разных реализациях XSLT.

API

replace( occurrences )

Creates a that will replace the first substring that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace( "e" ); // => ReplaceDefinition

replace.all( occurrences )

Creates a that will replace all substrings that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace.all( "dreaming" ); // => ReplaceDefinition

ReplaceDefinition

Contains the strategy for the replace.

ignoringCase()

Creates a that will ignore the case when matching the
.

Example:

replace( "java" ).ignoringCase(); // => ReplaceDefinition

from( target )

Creates a that will replace the given .

Receives a , which is a representing from where it
is going to be replaced.

Example:

replace( "Thunder" ).from( "Thunderstorm" ); // => ReplaceOperation

ReplaceOperation

Contains the algorithm representing what should be replaced.

with( replacement )

Creates a replacing with the given according to the
rules of the .

Receives a , which is a representing the new substring to
be replaced.

Example:

var result = replace( "Java" ).from( "Java is not JavaScript" ).with( "Type" );
console.log( result ); // => Type is not JavaScript

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fruits  c("one apple", "two pears", "three bananas")
str_replace(fruits, "", "-")
str_replace_all(fruits, "", "-")
str_replace_all(fruits, "", toupper)
str_replace_all(fruits, "b", NA_character_)

str_replace(fruits, "()", "")
str_replace(fruits, "()", "\\1\\1")
str_replace(fruits, "", c("1", "2", "3"))
str_replace(fruits, c("a", "e", "i"), "-")

# If you want to apply multiple patterns and replacements to the same
# string, pass a named vector to pattern.
fruits %>%
  str_c(collapse = "---") %>%
  str_replace_all(c("one" = "1", "two" = "2", "three" = "3"))

# Use a function for more sophisticated replacement. This example
# replaces colour names with their hex values.
colours  str_c("\\b", colors(), "\\b", collapse="|")
col2hex  function(col) {
  rgb  col2rgb(col)
  rgb(rgb"red", , rgb"green", , rgb"blue", , max = 255)
}

x  c(
  "Roses are red, violets are blue",
  "My favourite colour is green"
)
str_replace_all(x, colours, col2hex)

Example output

 "-ne apple"     "tw- pears"     "thr-e bananas"
 "-n- -ppl-"     "tw- p--rs"     "thr-- b-n-n-s"
 "OnE ApplE"     "twO pEArs"     "thrEE bAnAnAs"
 "one apple" "two pears" NA         
 "ne apple"     "tw pears"     "thre bananas"
 "oone apple"     "twoo pears"     "threee bananas"
 "1ne apple"     "tw2 pears"     "thr3e bananas"
 "one -pple"     "two p-ars"     "three bananas"
 "1 apple---2 pears---3 bananas"
 "Roses are #FF0000, violets are #0000FF"
 "My favourite colour is #00FF00"        

stringr documentation built on May 2, 2019, 11:03 a.m.

Пример использования

Использование флагов g и i с методом replace()

const str = 'Ты кто такой? Что ты делаешь?'; // инициализируем строковое значение
const newstr = str.replace(/ты/gi, 'вы');
console.log(newstr); // "вы кто такой? Что вы делаешь?"

Перестановка слов местами

const str = 'Boris Britva'; // инициализируем строковое значение
const newstr = str.replace(/(\w+)\s(\w+)/, '$2 $1');
console.log(newstr); // Britva Boris

Перевод первых букв всех слов в верхний регистр с помощью функции замены

const str = 'андрей, артем, иван, вазген'; // инициализируем строковое значение

const func = (word) =>  word.substring(0,1).toUpperCase() + word.substring(1); // инициализируем функцию замены

const newstr = str.replace(/(+)/g, func);

console.log(newstr); // "Андрей, Артем, Иван, Вазген"

Определенный символ в качестве разделителя числа

const num = 123456789; // инициализируем числовое значение
const re = /\B(?=(\d{3})+(?!\d))/g; // инициализируем регулярное выражение

const newstr = num.toString().replace(re, ','); // запятые в качестве разделителя числа
const newstr2 = num.toString().replace(re, ' '); // пробелы в качестве разделителя числа

console.log(newstr); // "123,456,789"
console.log(newstr2); // "123 456 789"

JavaScript String

Функция в качестве второго параметра

Если вы указываете функцию в качестве второго параметра, то она вызывается при каждом совпадении. При наличии одного со­впадения в нее передаются три аргумента: совпадение, позиция совпадения в строке и вся строка. Если групп захвата несколько, каждая совпавшая строка передается в функцию как аргумент, при этом двумя последними аргументами являются по­зиция совпадения с шаблоном в строке и оригинальная строка. Результат вызова функции (её возвращаемое значение) будет использоваться в качестве строки замены.

Функция принимает следующие аргументы:

  1. – найденное совпадение, (cоответствует шаблону замены $&, описанному выше).
  2. – содержимое скобок (если есть), из объекта RegExp в первом параметре метода replace() (cоответствует шаблонам замены $1, $2 и так далее, описанным выше). Например, если в качестве шаблона передано регулярное выражение /(\a+)(\b+)/, параметр p1 будет значение сопоставления с подгруппой \a+, а параметр p2 — с подгруппой \b+.
  3. – позиция, на которой найдено совпадение (например, если вся строка равна ‘abcd’, а сопоставившаяся подстрока равна ‘bc’, то этот аргумент будет равен 1).
  4. – исходная строка.

Если скобок в регулярном выражении нет, то у функции всегда будет ровно 3 аргумента: replacer(match, offset, string).

Пример, с использованием функции, выводящей полную информацию о совпадениях:

Выполнить код »
Скрыть результаты

При наличии в регулярном выражении двух скобок функция принимает уже 5 аргументов:

Выполнить код »
Скрыть результаты

← предыдущая
следующая →

API

replace( occurrences )

Creates a that will replace the first substring that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace( "e" ); // => ReplaceDefinition

replace.all( occurrences )

Creates a that will replace all substrings that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace.all( "dreaming" ); // => ReplaceDefinition

ReplaceDefinition

Contains the strategy for the replace.

ignoringCase()

Creates a that will ignore the case when matching the
.

Example:

replace( "java" ).ignoringCase(); // => ReplaceDefinition

from( target )

Creates a that will replace the given .

Receives a , which is a representing from where it
is going to be replaced.

Example:

replace( "Thunder" ).from( "Thunderstorm" ); // => ReplaceOperation

ReplaceOperation

Contains the algorithm representing what should be replaced.

with( replacement )

Creates a replacing with the given according to the
rules of the .

Receives a , which is a representing the new substring to
be replaced.

Example:

var result = replace( "Java" ).from( "Java is not JavaScript" ).with( "Type" );
console.log( result ); // => Type is not JavaScript

Подмаски

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

  1. Локализирует набор альтернатив. Например, шаблон
    cat(aract|erpillar|) соответствует одному из слов «cat»,
    «cataract» или «caterpillar». Без использования скобок он соответствовал
    бы строкам «cataract», «erpillar» или пустой строке.

  2. Указывает на необходимость захвата подстроки (как показано выше).
    В том случае, если соответствие шаблону было найдено, подстрока,
    соответствующая подмаске, также передается обратно вызывающему
    при помощи аргумента ovector функции
    pcre_exec(). Открывающие круглые скобки нумеруются
    слева направо (начиная с единицы) и их порядковые номера
    используются для нумерации соответствующих подстрок в результате.

Например, если строка «the red king» сопоставляется с шаблоном

the ((red|white) (king|queen)),

будут захвачены подстроки «red king», «red» и «king», с номерами 1, 2 и 3
соответственно.

На самом деле выполнение одновременно двух функций не всегда удобно.
Бывают случаи, когда необходима группировка альтернатив без захвата строки.
В случае, если после открывающей круглой скобки следует «?:», захват строки
не происходит, и текущая подмаска не нумеруется.
Например, если строка «the white queen» сопоставляется с шаблоном

the ((?:red|white) (king|queen)),

будут захвачены подстроки «white queen» и «queen», и они будут пронумерованы
1 и 2 соответственно. Максимальное количество захватывающих подмасок — 65535.
Такие большие шаблоны могут не скомпилироваться, в зависимости от настроек libpcre.

В случае, если в незахватывающей подмаске необходимо указать дополнительные
опции, можно воспользоваться удобным сокращением: символ, обозначающий
устанавливаемую опцию помещается между «?» и «:».
Таким образом, следующие два шаблона

соответствуют одному и тому же набору строк. Поскольку альтернативные
версии берутся слева направо, и установленные опции сохраняют свое
действие до конца подмаски, опция, установленная в одной ветке, также
имеет эффект во всех последующих ветках. Поэтому приведенные выше шаблоны
совпадают как с «SUNDAY», так и с «Saturday».

Также можно использовать именованные подмаски с помощью синтаксиса
(?Ppattern). Эта подмаска будет индексирована
в массиве совпадений кроме обычного числового индекса, еще и по имени name.
В PHP 5.2.2 было добавлено два альтернативных синтаксиса:
(?pattern) и (?’name’pattern).

Иногда бывает необходимо иметь несколько совпадений, исключающих друг друга.
Обычно, каждое такое совпадение получает свой собственный номер, даже
если шаблон позволяет совпасть только одному из них.
Синтаксис (?| позволяет обойти это поведение и убрать
дублирующиеся номера. Рассмотрим следующее регулярное выражение,
сопоставленное со строкой Sunday:

Здесь Sun сохраняется в ссылке 2, тогда как
ссылка 1 пуста. Если же совпадет Sat, то она будет
помещена в ссылку 1, а ссылка 2 вообще не будет существовать.
Использование (?| в шаблоне решает эту проблему:

В этом шаблоне обе подмаски Sun и Sat
будут сохранены под номером 1.

Find

Find(Подстрока, Строка)

  • Подстрока — искомая подстрока,
  • Строка — строка, в которой ищется подстрока,
  • Порядок — необязательный параметр, позицию какого по счету вхождения Подстроки в Строку возвращать. Аргумент числового типа.

Функция возвращает позицию первого символа Подстроки заданного Порядка в Строке.
Порядок может быть как положительным, так и отрицательным. Если Порядок положительный, то поиск происходит слева направо, если отрицательный, то справа налево.
Если вхождения заданного порядка нет, то функция возвращает 0.
Например, Find(«A», «A000A00A», 2) вернет позицию второго слева вхождения подстроки «А» в строку «A000A00A», т.е. 5;
Find(«A», «A000A00A», -1) вернет позицию первого справа вхождения подстроки «А» в строку «A000A00A», т.е. 8.
Если Порядок равен нулю, то функция возвращает Неопределенное значение (Null).

Why?

The above principle has been ignored for some trivial operations, such as replacing a String. Not anymore.

Try to understand the expected output of the code below:

replaceAll( "bus", "road", "Get on the road", true );

It is impossible to understand the order and meaning of the arguments by looking at the code:

If you need to look elsewhere to be able to understand something, then something is wrong.

What if you could tell the computer to «Replace all occurrences ignoring the case from target with replacement»?

const occurrences = "road";
const target = "Get on the Road";
const replacement = "bus";
const result = replace.all( occurrences ).ignoringCase().from( target ).with( replacement );
console.log(result); // => Get on the bus

Or, if you don’t want to use variables:

const result = replace.all( "road" ).ignoringCase().from( "Get on the Road" ).with( "bus" );
console.log(result); // => Get on the bus

Tcharam! This changes how you replace strings.

Stop using functions that are impossible to understand, the next developer say «Thanks».

Методы вставки

Чтобы наш появился, нам нужно вставить его где-нибудь в . Например, в .

Для этого есть метод , в нашем случае: .

Вот полный пример:

Вот методы для различных вариантов вставки:

  • – добавляет узлы или строки в конец ,
  • – вставляет узлы или строки в начало ,
  • –- вставляет узлы или строки до ,
  • –- вставляет узлы или строки после ,
  • –- заменяет заданными узлами или строками.

Вот пример использования этих методов, чтобы добавить новые элементы в список и текст до/после него:

Наглядная иллюстрация того, куда эти методы вставляют:

Итоговый список будет таким:

Эти методы могут вставлять несколько узлов и текстовых фрагментов за один вызов.

Например, здесь вставляется строка и элемент:

Весь текст вставляется как текст.

Поэтому финальный HTML будет:

Другими словами, строки вставляются безопасным способом, как делает это .

Поэтому эти методы могут использоваться только для вставки DOM-узлов или текстовых фрагментов.

А что, если мы хотим вставить HTML именно «как html», со всеми тегами и прочим, как делает это ?

Примеры preg_match PHP

1.

if (!preg_match("/^*\@*\.{2,6}$/i", $email)) exit("Неправильный адрес"); 

2.

// \S означает "не пробел", а + -
// "любое число букв, цифр или точек". Модификатор 'i' после '/'
// заставляет PHP не учитывать регистр букв при поиске совпадений.
// Модификатор 's', стоящий рядом с 'i', говорит, что мы работаем
// в "однострочном режиме" (см. ниже в этой главе).
preg_match('/(\S+)@(+)/is', "Привет от somebody@mail.ru!", $p);
// Имя хоста будет в $p, а имя ящика (до @) - в $p.
echo "В тексте найдено: ящик - $p, хост - $p";

3.

if (!preg_match("|^{13,16}$|", $var)) ...

4.

if (preg_match("/(^+(*))$/" , $filename)==NULL) {
        echo "invalid filename";
        exit;
}
/\.(?:z(?:ip|{2})|r(?:ar|{2})|jar|bz2|gz|tar|rpm)$/i
/\.(?:mp3|wav|og(?:g|a)|flac|midi?|rm|aac|wma|mka|ape)$/i
/\.(?:exe|msi|dmg|bin|xpi|iso)$/i
/\.(?:jp(?:e?g|e|2)|gif|png|tiff?|bmp|ico)$/i
/\.(?:mpeg|ra?m|avi|mp(?:g|e|4)|mov|divx|asf|qt|wmv|m\dv|rv|vob|asx|ogm)$/i

5.

preg_match_all('/(8|7|\+7){0,1}{0,}({2}){0,}(({2}{0,}{2}{0,}{3})|({3}{0,}{2}{0,}{2})|({3}{0,}{1}{0,}{3})|({2}{0,}{3}{0,}{2}))/',
    $text, $regs );

6.

if (preg_match("/^{8,20}$/",$string)) echo "yes"; else echo "no";

7.абвгДДДеёааббаабб

if (preg_match("/(.)\\1\\1/",$string)) echo "yes"; else echo "no";

8.

preg_match("/abc/", $string); // true если найдёт в любом месте
preg_match("/^abc/", $string); // true если найдёт в начале
preg_match("/abc$/", $string); // true если найдёт в конце

9.

preg_match("/(ozilla.|MSIE.3)/i", $_SERVER);

API

replace( occurrences )

Creates a that will replace the first substring that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace( "e" ); // => ReplaceDefinition

replace.all( occurrences )

Creates a that will replace all substrings that
matches the .

Receives an , which is a representing what is going to
be replaced.

Example:

replace.all( "dreaming" ); // => ReplaceDefinition

ReplaceDefinition

Contains the strategy for the replace.

ignoringCase()

Creates a that will ignore the case when matching the
.

Example:

replace( "java" ).ignoringCase(); // => ReplaceDefinition

from( target )

Creates a that will replace the given .

Receives a , which is a representing from where it
is going to be replaced.

Example:

replace( "Thunder" ).from( "Thunderstorm" ); // => ReplaceOperation

ReplaceOperation

Contains the algorithm representing what should be replaced.

with( replacement )

Creates a replacing with the given according to the
rules of the .

Receives a , which is a representing the new substring to
be replaced.

Example:

var result = replace( "Java" ).from( "Java is not JavaScript" ).with( "Type" );
console.log( result ); // => Type is not JavaScript

Пример использования



	Использование JavaScript метода .replaceChild()
	
	
		onclick = "myFunc()">Replace 
		
  • id =

«first»>
1

2

3

4

5

В этом примере с использованием атрибута событий onclick при нажатии на кнопку (HTML элемент ) вызываем функцию myFunc(), которая:

  • С использованием JavaScript метода getElementById() объекта Document выбирает элемент с определенным глобальным атрибутом id и инициализирует переменную этим значением.
  • С использованием свойства firstChild выбирает первый прямой дочерний узел элемента и инициализирует переменную этим значением.
  • С использованием JavaScript метода createElement() объекта Document создает новый пустой элемент .
  • С использованием JavaScript метода createTextNode() объекта Document создает узел с текстовым содержимым.
  • С использованием метода appendChild() объекта Node добавляем узел с текстовым содержимым созданному элементу .
  • И наконец, с помощью метода .replaceChild() заменяем один дочерний узел указанного узла другим (первый дочерний элемент элемента заменяем на созданный).

Результат нашего примера:


Пример использования JavaScript метода .replaceChild()

В следующем примере мы рассмотрим с Вами ситуацию при которой мы с помощью метода .replaceChild() будем вставлять для замены уже существующий элемент:

Использование JavaScript метода .replaceChild() (удаление и вставка элемента)
	
	
		onclick = "myFunc()">Replace 
		
  • id =

«first»>
1

2

3

4

5

В этом примере с использованием атрибута событий onclick при нажатии на кнопку (HTML элемент ) вызываем функцию myFunc(), которая:

С использованием JavaScript метода getElementById() объекта Document выбирает элемент с определенным глобальным атрибутом id и инициализирует переменную этим значением.
С использованием свойства firstChild и lastChild выбирает первый и последний прямой дочерний узел элемента и инициализирует переменные этими значениями.
С использованием метода .replaceChild() заменяем один дочерний узел указанного узла другим (первый дочерний элемент элемента заменяем на последний)

Обратите внимание на то, что при замене первый дочерний элемент сначала удаляется, а затем вставляется вместо последнего дочернего элемента.

Результат нашего примера:


Пример использования JavaScript метода .replaceChild() (удаление и вставка элемента)JavaScript Node

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   msgbox("Line 1 : " & StrReverse("VBSCRIPT"))
   msgbox("Line 2 : " & StrReverse("My First VBScript"))
   msgbox("Line 3 : " & StrReverse("123.45"))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Возвращает строку после изменения последовательности символов данной строки.

Новые статьи

  • Пользовательские функции в VBA для Excel — 30/03/2018 14:39
  • Массивы в VBA: как работать с массивами — 28/03/2018 18:02
  • Функции даты-времени в VBA. Работа с датой и временем — 25/03/2018 17:33

Предыдущие статьи

  • Работа с циклами в VBA:loop, for each, for next — 17/03/2018 18:40
  • Решения, условия, алгоритмы if, then, switch в VBA Excel — 10/03/2018 21:52
  • Константы в VBA Excel — Const. Как присвоить значение константам — 10/03/2018 07:53
  • Поле ввода в VBA Excel — InputBox. Синтаксис, параметры и описание — 10/03/2018 07:03
  • Окно сообщения в VBA Excel — MsgBox — 09/03/2018 06:34
  • Простые Макросы Excel, написать шаг за шагом — 10/02/2018 20:07
  • Переменные в VBA, значения и типы — 26/06/2017 06:37
  • Программирование vba, макросы в Word и Excel — 19/12/2015 16:18

Примеры preg_replace PHP

1.

$text = preg_replace("~[^~",'',$text);

2.

$text = preg_replace('##sUi', '', $text);

3.

$text = preg_replace ("~(\\\|\*|\?|\|\(|\\\$|\))~", "",$text);

4.

$text = preg_replace('/(]+)>)/U', '', $text);

5.

$text = preg_replace('##is', '', $text);

6.

$text = str_replace('#39;', '', $text); // удаляем одинарные кавычки
$text = str_replace('"', '', $text); // удаляем двойные кавычки
$text = str_replace('&', '', $text); // удаляем амперсанд
$text = preg_replace('/(()_—«»#\/]+)/', '', $text); // удаляем недоспустимые символы

7.

$text = trim($text); // удаляем пробелы по бокам
$text = preg_replace('/ /', '', $text); // чистим обычные пробелы
$text = preg_replace("/ +/", " ", $text); // множественные пробелы заменяем на одинарные

8.

$text = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $text); // убираем лишние переводы строк (больше 1 строки)

9.

$file = 'image.jpg';
$file = preg_replace("/.*?\./", '', $file); // выведет image

10.

function ProcessText($text)
{
    $text = trim($text); // удаляем пробелы по бокам
    $text = stripslashes($text); // удаляем слэши
    $text = htmlspecialchars($text); // переводим HTML в текст
    $text = preg_replace("/ +/", " ", $text); // множественные пробелы заменяем на одинарные
    $text = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $text); // убираем лишние переводы строк (больше 1 строки)
    $test = nl2br ($text); // заменяем переводы строк на тег
    $text = preg_replace("/^\"(+[^=>
    $text = preg_replace("/(«){2,}/","«",$text); // убираем лишние левые кавычки (больше 1 кавычки)
    $text = preg_replace("/(»){2,}/","»",$text); // убираем лишние правые кавычки (больше 1 кавычки)      
    $text = preg_replace("/(\r\n){2,}/u", "

«, $text); // ставим абзацы
    return $text; //возвращаем переменную
}
11.

$string = preg_replace("!(.*?)!si","\\1НОВЫЙ_ТЕГ>",$string);

12.

$text = preg_replace('#(\.|\?|!|\(|\)){3,}#', '\1\1\1', $text);

13.

$string = preg_replace("/^/", "Начало: ", $string); // в начало
$string = preg_replace("/$/", " читать далее...", $string); // в конец

14.

$text = preg_replace('#(?
    "Посмотреть на сайте",
    nl2br(stripslashes($text)));

15.

$str = preg_replace('/^(.+?)(\?.*?)?(#.*)?$/', '$1$3', $url);

16.

$string = preg_replace("/^/", "
", $string); // в начало всех строк
$string = preg_replace("/$/", "
", $string); // в конец всех строк

17.

// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.
$search = array ("''si",  // Вырезает javaScript
                 "']*?>'si",           // Вырезает HTML-теги
                 "'()+'",                 // Вырезает пробельные символы
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'(\d+);'e");                    // интерпретировать как php-код
$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");
$text = preg_replace($search, $replace, $document);

18.

$html = preg_replace( '/(\S+)@(+)/is', '$0', $text);

JavaScript

JS Array
concat()
constructor
copyWithin()
entries()
every()
fill()
filter()
find()
findIndex()
forEach()
from()
includes()
indexOf()
isArray()
join()
keys()
length
lastIndexOf()
map()
pop()
prototype
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()

JS Boolean
constructor
prototype
toString()
valueOf()

JS Classes
constructor()
extends
static
super

JS Date
constructor
getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
now()
parse()
prototype
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCDate()
setUTCFullYear()
setUTCHours()
setUTCMilliseconds()
setUTCMinutes()
setUTCMonth()
setUTCSeconds()
toDateString()
toISOString()
toJSON()
toLocaleDateString()
toLocaleTimeString()
toLocaleString()
toString()
toTimeString()
toUTCString()
UTC()
valueOf()

JS Error
name
message

JS Global
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
eval()
Infinity
isFinite()
isNaN()
NaN
Number()
parseFloat()
parseInt()
String()
undefined
unescape()

JS JSON
parse()
stringify()

JS Math
abs()
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
cbrt()
ceil()
cos()
cosh()
E
exp()
floor()
LN2
LN10
log()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
sin()
sqrt()
SQRT1_2
SQRT2
tan()
tanh()
trunc()

JS Number
constructor
isFinite()
isInteger()
isNaN()
isSafeInteger()
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
NaN
POSITIVE_INFINITY
prototype
toExponential()
toFixed()
toLocaleString()
toPrecision()
toString()
valueOf()

JS OperatorsJS RegExp
constructor
compile()
exec()
g
global
i
ignoreCase
lastIndex
m
multiline
n+
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
source
test()
toString()

(x|y)
.
\w
\W
\d
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
\xxx
\xdd
\uxxxx

JS Statements
break
class
continue
debugger
do…while
for
for…in
for…of
function
if…else
return
switch
throw
try…catch
var
while

JS String
charAt()
charCodeAt()
concat()
constructor
endsWith()
fromCharCode()
includes()
indexOf()
lastIndexOf()
length
localeCompare()
match()
prototype
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
valueOf()

Why?

The above principle has been ignored for some trivial operations, such as replacing a String. Not anymore.

Try to understand the expected output of the code below:

replaceAll( "bus", "road", "Get on the road", true );

It is impossible to understand the order and meaning of the arguments by looking at the code:

If you need to look elsewhere to be able to understand something, then something is wrong.

What if you could tell the computer to «Replace all occurrences ignoring the case from target with replacement»?

const occurrences = "road";
const target = "Get on the Road";
const replacement = "bus";
const result = replace.all( occurrences ).ignoringCase().from( target ).with( replacement );
console.log(result); // => Get on the bus

Or, if you don’t want to use variables:

const result = replace.all( "road" ).ignoringCase().from( "Get on the Road" ).with( "bus" );
console.log(result); // => Get on the bus

Tcharam! This changes how you replace strings.

Stop using functions that are impossible to understand, the next developer say «Thanks».

Arguments

Input vector. Either a character vector, or something
coercible to one.

Pattern to look for.

The default interpretation is a regular expression, as described
in stringi::stringi-search-regex. Control options with
.

Match a fixed string (i.e. by comparing only bytes), using
. This is fast, but approximate. Generally,
for matching human text, you’ll want which
respects character matching rules for the specified locale.

A character vector of replacements. Should be either
length one, or the same length as or .
References of the form , , etc will be replaced with
the contents of the respective matched group (created by ).

To perform multiple replacements in each element of ,
pass a named vector () to
. Alternatively, pass a function to
: it will be called once for each match and its
return value will be used to replace the match.

To replace the complete string with , use
.

Ссылка на основную публикацию