답변:
일반적으로 점은 개행을 제외한 모든 문자와 일치합니다 .
그래도 .*
작동하지 않으면 "도 줄 바꿈과 일치"옵션을 설정하십시오 (또는 사용 (?s).*
).
"dotall"옵션이없는 JavaScript를 사용하는 경우을 시도하십시오 [\s\S]*
. 이것은 "공백 또는 비 공백의 문자 수와 일치"-사실상 "모든 문자열과 일치"를 의미합니다.
JavaScript에서만 작동하고 다른 정규 표현식으로 인식되지 않는 또 다른 옵션은 [^]*
모든 문자열과 일치하는 것입니다. 그러나 [\s\S]*
더 휴대하기 쉽기 때문에 더 널리 사용되는 것 같습니다.
.*
일치하지 않지만 0 문자와 일치하기 때문에 \n
포함 된 문자열을 처리 \n
합니다.
(?s).*
나를위한 작품은 새로운 라인을 포함하여 모든 일치
*
(에서와 같이 /.*(?:)/
) 무언가를 추가 하거나 정규 표현식 생성자 ( var foo = new RegExp(".*")
)를 사용하면 피할 수 있습니다 .
(.*?)
무엇이든 일치합니다-몇 년 동안 사용해 왔습니다.
("title":".*?")
[\s\S]*
또는을 사용하십시오 [^]*
.
w+
충분하지 않습니다, 나는 결국 사용 .+
. 운 좋게도 아직 나를 물지 않았다.
를 사용 .*
하고 구현의 단일 줄과 동등한 것을 사용하고 있는지 확인하여 줄 끝에서 일치하도록하십시오 .
여기에 좋은 설명이 있습니다-> http://www.regular-expressions.info/dot.html
JavaScript의 경우 가장 쉽고 간단한 답변은 /.*/ 인 것 같습니다.
다른 사람들이 제안한 것처럼 /(.*?)/도 작동하지만 /.*/가 더 간단합니다. 내가 볼 수 있거나 끝날 때까지 패턴 내부의 ()는 필요하지 않습니다. 빈 문자열을 포함하여 절대적으로 일치하는 것
비 솔루션 :
/ [\ s \ S] /는 빈 문자열과 일치하지 않으므로 솔루션이 아닙니다.
/ [\ s \ S] * / DOES는 빈 문자열과도 일치합니다. 그러나 문제가 있습니다 : 코드에서 코드를 사용하면 '* /'가 주석 끝으로 해석되므로 해당 코드를 주석 처리 할 수 없습니다.
/ ([\ s \ S] *) / 작동하고 주석 문제가 없습니다. 그러나 /.*/보다 이해하기가 길고 복잡합니다.
2018 사양은 s 플래그 (별칭 : dotAll)를 제공하므로 줄 바꿈을 .
포함한 모든 문자와 일치합니다.
const regExAll = /.*/s; //notice the 's'
let str = `
Everything
in this
string
will
be
matched. Including whitespace (even Linebreaks).
`;
console.log(`Match:`, regExAll.test(str)); //true
console.log(`Index Location:`, str.search(regExAll));
let newStr = str.replace(regExAll,"🐔");
console.log(`Replaced with:`,newStr); //Index: 0
위의 코드는 Chrome에서 작동하지만 s
플래그는 Firefox에서 아직 구현되지 않았지만 곧 적용 됩니다.
<?php
$str = "I bought _ sheep";
preg_match("/I bought (.*?) sheep", $str, $match);
print_r($match);
?>
나는 사용을 추천합니다 /(?=.*...)/g
예
const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true
const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true
const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true
const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text
정규식 을 사용 하여 테스트
솔직히 많은 답변이 오래되었으므로 "/.*/i"로 문자 내용에 관계없이 단순히 문자열을 테스트하면 모든 것을 충분히 얻을 수 있음을 알았습니다.
.*
작동해야합니다. 실제 코드를 붙여 넣을 수 있습니까?