...
쉼표 또는 문자열의 끝을보다 앞에 모든 x
문자를 제거하려면, 수행
이
rereplace(arguments.tags , "x(?=,|$)" , "" , "all")
여기 (?= )
부분은 미리보기 - 내용의 위치와 일치하지만 바뀐 내용에는 포함되지 않습니다. |
은 교대로 나타납니다. 리터럴 ,
과 일치하려고 시도하고 실패 할 경우 문자열의 끝 ($
)을 찾습니다.
고독한 x를 제거하지 않으려면 다음을 입력하십시오.
하면 (즉, 혼자가 아니라는 것입니다)가 아닌 단어 경계 검사를 사용할 수있는 단어의 끝에서 x가 있는지 확인하려면 ... "X 마크는, 자리"
x
전에
[a-zA-Z0-9_]
가없는 경우
rereplace(arguments.tags , "\Bx(?=,|$)" , "" , "all")
\B
가 일치하지 않습니다 - "단어의 끝"을 구성하는 것에 더 복잡/정확한 규칙, 당신은 할 수없는 lookbehind를 필요 재방송으로,하지만 여전히 충분히 쉽게 할 수 있습니다 :
arguments.tags.replaceAll("(?<=\S)x(?=,|$)" , "")
(단어 앞 부분에 공백이 아닌 문자가 하나만 있어도 단어의 일부로 간주되지만 보이는 너비 내에 한정된 너비의 표현식을 넣을 수 있습니다.)
분명히 어떤 문자를 사용하려면 x
[a-zA-Z]
또는 무엇이든지간에.
당신의 두 번째 표현은리스트의 말미에'하는'를 추가합니다 - 룩어 (즉'의 X (=? | $)')를 사용하여보고,이 피를 쉼표는 포함하지만 제외 경기에서 (따라서 교체면에서 요구하지 않으므로 마지막에 추가되지 않습니다.) –
@PeterBoughton 당신은 전적으로 옳습니다 - 당신이 더 좋은 대답입니다. –