Совпадение с реальным символом доллара в php регулярном выражении - PullRequest
1 голос
/ 04 апреля 2020

Я давно не пользовался регулярным выражением и не могу понять, как сопоставить действительный символ доллара, и любая ссылка на символ доллара и регулярное выражение говорит мне об особых значениях и случаях. Мне нужно соответствовать $. Я ожидал, что \$ или $$ должен был избежать этого, но я все еще не соответствую ему.

Вот мой текст

(WW) Capacity Charge
. . . . . . . . . . . . . . . . $ 123.45
WW Commodity Charge  . . . . . . . . . $ 67.89

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

preg_match("|(?<=\$\s)(.*)(?=\n)|",$data[1],$matches); //no matches
preg_match("|(?<=$\s)(.*)(?=\n)|",$data[1],$matches); //no matches
preg_match("|(?<=$)(.*)(?=\n)|",$data[1],$matches); //no matches
preg_match("|(?<=\$)(.*)(?=\n)|",$data[1],$matches); //no matches
preg_match("|(?<=$$)(.*)(?=\n)|",$data[1],$matches); //no matches

Просто чтобы проверить, что что-то соответствует, я даже сделал

preg_match("|(?<=\.)(.*)(?=\n)|",$data[1],$matches); // . . . . . . . . . . . . . . . $ 123.45
preg_match("|(?<=.)(.*)(?=\n)|",$data[1],$matches); // . . . . . . . . . . . . . . . $ 123.45
preg_match("|(?<=1)(.*)(?=\n)|",$data[1],$matches); // 23.45

Как я могу сопоставить текст между $ и перевод строки?

1 Ответ

1 голос
/ 04 апреля 2020

Вы в двойных кавычках, поэтому вам нужно дважды убежать (один раз для PHP, затем один для PCRE). Я предпочитаю класс персонажей, потому что он работает во всех разновидностях регулярных выражений.

...