일부 데이터 처리의 경우 문자열을 여러 항목으로 분할해야합니다. 입력 문자열의 예는 다음정규 표현식으로 두 자리 사이에있는 특정 문자 일치
가'one, two & three and four-five 123-456'
지금, I 가능한 구분자가 ,
, &
, (공간)되는 항목,
and
, -
으로 문자열을 분리 할 필요가있다. 그러나 이것이 내가 붙어있는 지점입니다. 두 개의 숫자 사이에있을 때는 -
으로 나눠서는 안됩니다.
내가 실제 분할을 할 PHP와 preg_split
를 사용하고,하지만 난 구분 기호를 제외한 구분 기호를 일치하는 정규식 패턴을 필요 -
이 두 숫자 사이에 (숫자뿐만 아니라 123-456
될 수 있습니다) 때. 각 항목 주위의 공백은 PHP에서 trim()
으로 처리됩니다. 나는 다음과 같은 정규식 패턴을 사용하고
: (preg_split
사용 후 등)
/(and|,|\s|&)|\D(-)\D/
출력은 다음과 같습니다
[0] => one
[1] => two
[2] => three
[3] => fou
[4] => ive
[5] => 123-456
작업은 정확하지만 그것은 또한 먼저 마지막과 소요 -
구분 기호에 대한 주변 텍스트의 문자. 항목 번호 123-456
은 -
의 숫자가 즉시 둘러싸 일 때 일치하지 않아야하며 (preg_split
으로 나눠서는 안됨) 올바른 것입니다.
예상 출력은 다음과 같습니다 어떤 정보를 알려 나는 내 질문에 업데이 트됩니다 수 있도록 부족한 경우
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
[5] => 123-456
어떤 도움이, 감사합니다.
감사합니다. 이것은 나의 질문을 해결했다. 그것이 나를 허용 할 때 나는 당신의 대답을 수분 안에 받아 들일 것이다. 관심이 없으면 첫 번째 부분의 표기법이 다른 이유는 무엇입니까? 그것은 내 것과 정확히 똑같이 작동하지만, 다른 일을합니까? –
간단한 설명을 추가했습니다. –
마지막 교체 부분은'(? revo