HTML 요소가 PHP 변수로 포함된 줄 찾기

HTML 요소가 PHP 변수로 포함된 줄 찾기

html 요소를 값으로 포함하는 php variabe 행을 찾기 위해 grep과 함께 사용할 정규 표현식을 만들려고 하는데 문제가 발생했습니다.

나는 이것을 할 수 있었다:

.*(\$)*(\=)*(\<).*\n?

$, = 및 < 문자가 포함된 행과 일치해야 합니다.

예를 들어:

$var = "<h1>test</h1>";

내가 사용하는 Grep 명령은 다음과 같습니다.

grep -Pro ".*(\$)*(\=)*(\<).*\n?"

어떤 이유로 다음과 같은 줄과도 일치하는 것 같습니다.

echo "</td> \n";

답변1

*다음 s는 항상 그렇듯이 0개 이상을 의미합니다 .(\$)(\=)

.*\n?0개 이상의 선택적 문자를 나타냅니다 ( ?, 은 0 또는 1을 나타냄) \n.

이는 앞에 이스케이프 및/또는 가 있는지 여부에 관계없이 .*(\$)*(\=)*(\<).*\n?모든 줄이 일치함을 의미합니다 .(\<)$=

영어에서 이 정규식은 "0개 이상의 문자, 선택적으로 1개 $, 가능한 1개 =, 1개 <(선택 사항 아님), 0개 이상의 문자, 선택적인 Select 및 개행 문자"로 읽혀집니다.

즉, 전체 정규식(캡처 무시) <은 정규식의 유일한 것입니다.아니요임의로 선택할 수 있는.

그런데, 하나 이상을 의미한다면 +대신 사용하세요.*

다음과 같은 작업을 더 시도해 볼 수도 있습니다.

grep -P '\$var\s*=\s*['"].*<[^>]+>'

$var0개 이상의 공백 문자, 1개 =, 다시 0개 이상의 공백 문자, 1개 '또는 1개 ", 0개 이상의 임의 문자, <임의의 문자 순으로 일치합니다 .와는 별개로a >, 그리고 마지막으로 a >.

예를 들어 $var='....<h1>'일치합니다.

이는 'var='과 html 사이의 개행 문자를 포착하지 않는다는 점에 유의하세요.$var='htmlcode'

관련 정보