Ok ... 문제에 대한 만족스럽지 못한 해결책이 있습니다.변수 수를 바꾸는 ... 정규식?
{sup 19}F({sup 3}He,t){sup 19}Ne(p){sup 18}F
등등과 같은 출력을 필요 :
¹⁹F(³He,t)¹⁹Ne(p)¹⁸F
를 I 먼저 {SUP의 XX}의 각 섹션을 분할 교체 일련 사용
문제는 그 입력과 같이있을 것이다 {sup x} {sup x}로 변환 한 다음 각각의 정규 표현식을 사용하여 문자를 UTF-8 단일 대체 문자로 바꿉니다. "문제"는 {sup} 섹션이 1, 2 또는 3 자릿수의 길이를 가질 수 있다는 것입니다 (어쩌면 더 많은 것을 알 수 있습니다). 각 섹션을 하나의 숫자로 분리 된 {sup} 섹션으로 "확장"하고자합니다. .
retval = retval.replaceAll("\\{sup ([1-9])([0-9])\\}", "{sup $1}{sup $2}");
retval = retval.replaceAll("\\{sup ([1-9])([0-9])([0-9])\\}", "{sup $1}{sup $2}{sup $3}");
내 질문 :이 작업을 수행 할 수있는 방법이
이나의 현재 솔루션 (자바)과 같다 (나는 또한 ... 첨자 {하위}과 같은 문제가 있습니다) 얼마나 많은 숫자 (또는 적어도 적당한 숫자)가 있더라도 하나의 패스?
왜'{sup '부분을 선택 사항으로 표시 했습니까? '1}'과 (과) 일치하는 것 같습니다. –
@Mike : OP는'{sup 123}'을'{sup 1} {sup 2} {sup 3}'로 대체하려고합니다. 첫 번째 자릿수 앞에'{sup}가 있고 그 뒤에 마지막 자릿수에는'}'이 있습니다. 그 이유는 선택 사항입니다. –
@Mike : 아, 무슨 뜻인지 알 겠어. 따라서 내 발언은 "너는 조심해야한다 * overmatch *!". 저의 두 번째 해결책 인'\ G'가 들어있는 것을보십시오. –