CSS 글꼴 규칙에서 호스트 이름을 선택하기위한 정규식

코드 모험가

CSS 파일에서 호스트 이름을 선택하는 Ruby에서 정규식을 빌드하려고 gsub하지만 ( 로 대체하기 위해 )이 사용 사례에서 작동하는 하나를 구성하는 데 어려움을 겪고 있습니다.

파일에 다른 URL이 있으므로 (일부는 주석에 있고 일부는 다른 CSS 파일을 포함) 지나치게 욕심을 내지 않습니다.

내가 선택하고 싶은 단지 계획과의 호스트 이름 src urls@font-face규칙이 아닌 의견이나 그렇지 않으면 파일에있는 URL을. (즉, //fonts.example.com/아래 예에서 선택 하고 싶습니다 )

정규식이 실행되는 예제 데이터 :

*/\n/* A commented out url about copyright https://example.com/copyright */\n/*
 */\n/*{\"last_published\":\"2017-09-19 09:55:28 UTC\"}*/\n\n@import url(\"https://example.com/additional.css");\n\n@font-face {\nfont-family:\"neuefranklink\";\nsrc:url(\"//fonts.example.com/k/neuefranklin.woff2\") format(\"woff2\"),url(\"//fonts.example.com/k/neuefranklin.woff\") format(\"woff\"),url(\"//fonts.example.com/k/neuefranklin.otf\") format(\"opentype\");\nfont-style:normal;font-weight:900;\n}

나는이 정규식까지 얻었 /(?<=url\(\"\/\/)/지만 스키마의 첫 번째 백 슬래시를 넘어서 버립니다. 이에 대한 해결책이 있다면 대단히 감사하겠습니다!

ctwheels

대답

간결한

불행히도 정규식으로이를 수행하는 직접적인 방법은 없습니다. 그러나 할 수있는 일은 해결 방법을 사용하여 각각의 @font-face위치를 확인한 다음 그 안에서 URL을 찾는 것입니다.


암호

1 단계 :@font-face콘텐츠를 캡처 그룹 1로 가져옵니다.

@font-face\s*{([\s\S]*?)}

2 단계 : 1 단계 의 캡처 그룹 1 콘텐츠 내에서 URL 찾기

url\("(.*?)"\)

결과

1 단계

입력

@font-face {
    font-family:"neuefranklink";
    src:url("//fonts.example.com/k/neuefranklin.woff2") format("woff2"),url("//fonts.example.com/k/neuefranklin.woff") format("woff"),url("//fonts.example.com/k/neuefranklin.otf") format("opentype");
    font-style:normal;
    font-weight:900;
}

출력 -캡처 그룹 1

font-family:"neuefranklink";
src:url("//fonts.example.com/k/neuefranklin.woff2") format("woff2"),url("//fonts.example.com/k/neuefranklin.woff") format("woff"),url("//fonts.example.com/k/neuefranklin.otf") format("opentype");
font-style:normal;
font-weight:900;

2 단계

입력 = Step 1 출력

출력 -캡처 그룹 1

//fonts.example.com/k/neuefranklin.woff2
//fonts.example.com/k/neuefranklin.woff
//fonts.example.com/k/neuefranklin.otf

편집

편집 1

아래 코드는 zetacu 에서 제공했습니다 (원본 게시물은이 답변 아래의 주석 참조).

string.gsub(/@font-face\s*{([\s\S]*?)}/){
    $1.gsub(/url\("(.*?)"\)/){
        "<<#{$1}>>"
    }
}

편집 2

단일 정규식을 사용할 가능성이 있지만 반드시 제안하지는 않습니다. 이 정규식을 깨뜨릴 수있는 몇 가지 사항이 있습니다. 다시 말하지만 동일한 것이 현재 정규식 (예 :)을 깨뜨릴 수 content: "}"있지만 사용법에 따라 작동 할 수 있습니다.

참고 :이 정규식은 PCRE 정규식 버전을 사용하므로 대부분의 정규식 엔진에서 작동하지 않을 수 있습니다. regex101에서 테스트 할 수 있습니다.

(?:@font-face\s*{|\G(?!\A))[^}]*?url\("(.*?)"\)(?=[^{]*?})\K

이것은 설명하기가 훨씬 더 복잡하므로 regex101이 대부분의 설명을 수행하도록 할 것입니다 ( REGULAR EXPRESSION입력 상자에 복사 / 붙여 넣기 하고 토큰에 마우스 오버 ). 그러나 누군가가 사용 된 토큰 중 일부 또는 사용 방식에 대한 설명을 원하면 기꺼이 설명하겠습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CSS 글꼴 선언을위한 정규식

분류에서Dev

JavaFX에서 CSS 글꼴 크기 규칙을 동적으로 조정

분류에서Dev

js에서 CSS 규칙을 제거하는 정규식

분류에서Dev

mysql 정규식 규칙에서 정규식 규칙을 설정하십시오.

분류에서Dev

Google 웹 글꼴 가중치 및 스타일을 캡처하는 정규식

분류에서Dev

정규식을 사용하여 호스트 이름 찾기

분류에서Dev

jquery에서 선택한 텍스트의 글꼴 크기 조정

분류에서Dev

Rich Edit에서 선택한 텍스트의 글꼴 이름을 얻는 방법

분류에서Dev

부트 스트랩에서 중요한 CSS 규칙을 무시하는 방법

분류에서Dev

정규식 선택 호스트 이름 만

분류에서Dev

텍스트 크기 및 글꼴 색상에 대한 CSS 조정

분류에서Dev

CSS 데이터 속성 선택기에 대한 정규식

분류에서Dev

bash + 서로 다른 호스트 이름에 대한 정규식 일치

분류에서Dev

Python에서 테스트 메서드 이름에 대한 규칙

분류에서Dev

여러 스타일 시트에서 사용할 CSS 규칙을 선택하는 방법

분류에서Dev

C에서 명명 규칙 이름 맹 글링 호출

분류에서Dev

javascript-정규식을 사용하여 글꼴 요소를 스팬 요소로 변환

분류에서Dev

theme.css에서 기본 고정 폭 글꼴을 선택하는 방법은 무엇입니까?

분류에서Dev

글꼴이 CSS 파일과 동일한 폴더에 없으면 CSS @ font-face 규칙을 만들 수 없습니다.

분류에서Dev

정규식 Python을 사용하여 텍스트에서 파일 이름 추출

분류에서Dev

Power Point의 텍스트에서 특정 문자의 글꼴 이름 바꾸기

분류에서Dev

글꼴을 사용하는 CSS의 사용자 정의 글꼴

분류에서Dev

정규식 이스케이프 규칙-Perl 호환 정규식

분류에서Dev

Google 스프레드 시트에서 이름을 남기고 이름 제목을 제거하는 정규식

분류에서Dev

파이썬 3에서 정규식을 사용하여 텍스트에서 CSS 제거

분류에서Dev

전체 이름 + 기호가없는 선택적 중간 이름을 플래그하는 정규식

분류에서Dev

특정 글꼴 아래에서 모든 Google 글꼴 CSS를 호출하는 방법

분류에서Dev

글꼴을 지원하지 않는 컨트롤에 글꼴 설정

분류에서Dev

로컬 테스트를 위해 CSS에 새 글꼴을 추가하는 방법

Related 관련 기사

  1. 1

    CSS 글꼴 선언을위한 정규식

  2. 2

    JavaFX에서 CSS 글꼴 크기 규칙을 동적으로 조정

  3. 3

    js에서 CSS 규칙을 제거하는 정규식

  4. 4

    mysql 정규식 규칙에서 정규식 규칙을 설정하십시오.

  5. 5

    Google 웹 글꼴 가중치 및 스타일을 캡처하는 정규식

  6. 6

    정규식을 사용하여 호스트 이름 찾기

  7. 7

    jquery에서 선택한 텍스트의 글꼴 크기 조정

  8. 8

    Rich Edit에서 선택한 텍스트의 글꼴 이름을 얻는 방법

  9. 9

    부트 스트랩에서 중요한 CSS 규칙을 무시하는 방법

  10. 10

    정규식 선택 호스트 이름 만

  11. 11

    텍스트 크기 및 글꼴 색상에 대한 CSS 조정

  12. 12

    CSS 데이터 속성 선택기에 대한 정규식

  13. 13

    bash + 서로 다른 호스트 이름에 대한 정규식 일치

  14. 14

    Python에서 테스트 메서드 이름에 대한 규칙

  15. 15

    여러 스타일 시트에서 사용할 CSS 규칙을 선택하는 방법

  16. 16

    C에서 명명 규칙 이름 맹 글링 호출

  17. 17

    javascript-정규식을 사용하여 글꼴 요소를 스팬 요소로 변환

  18. 18

    theme.css에서 기본 고정 폭 글꼴을 선택하는 방법은 무엇입니까?

  19. 19

    글꼴이 CSS 파일과 동일한 폴더에 없으면 CSS @ font-face 규칙을 만들 수 없습니다.

  20. 20

    정규식 Python을 사용하여 텍스트에서 파일 이름 추출

  21. 21

    Power Point의 텍스트에서 특정 문자의 글꼴 이름 바꾸기

  22. 22

    글꼴을 사용하는 CSS의 사용자 정의 글꼴

  23. 23

    정규식 이스케이프 규칙-Perl 호환 정규식

  24. 24

    Google 스프레드 시트에서 이름을 남기고 이름 제목을 제거하는 정규식

  25. 25

    파이썬 3에서 정규식을 사용하여 텍스트에서 CSS 제거

  26. 26

    전체 이름 + 기호가없는 선택적 중간 이름을 플래그하는 정규식

  27. 27

    특정 글꼴 아래에서 모든 Google 글꼴 CSS를 호출하는 방법

  28. 28

    글꼴을 지원하지 않는 컨트롤에 글꼴 설정

  29. 29

    로컬 테스트를 위해 CSS에 새 글꼴을 추가하는 방법

뜨겁다태그

보관