JSL 챌린지나는 주어진 패턴의 모든 발생에 대해 텍스트 문자열을 검색하고 루프를 사용하지 않고 위치를 얻는 직접적이고 우아한 방법을 찾아 내려하고있다. Munger는 얼마나 많은 사람들이 있는지를 알려줄 것입니다. 몇 가지 방법에 대해 생각할 수는 있지만 뭔가 빠져있는 것처럼 느껴집니다.
재 : JSL 챌린지요리 책 아이디어 같아.
https://community.jmp.com/t5/JSL-Cookbook/Search-a-string-for-all-occurrences-of-a-pattern/ta-p/79761
재 : JSL 챌린지그래. 그냥 궁금해. 나는 사람들이 유사한 질문을하지만 칼럼 내의 아미노산이나 염기의 관점에서 질문하게했다. BLAST와 다른 도구가 이런 종류의 질문에 더 좋은 장소라고 언급했다. 몇 사람이 텍스트 열 (예를 들어 주석과 같은) 내에서 특정 문자열을 찾고있었습니다. 그러나 텍스트 탐색기는 이러한 유형의 질문에 대해 그 격차를 메울 수 있습니다 (정지 단어 등 제공)재 : JSL 챌린지솔직히, 이것은 비슷한 것을하는 과정에서 생각한 일반적인 질문 일뿐입니다. 나는 과거에 그 문제를 뛰어 넘었지만 상황을 기억할 수 있다는 것을 압니다. 마찬가지로, 루프를 사용하지 않고도 대상 문자열을 포함하는 요소를 식별하는 텍스트 문자열 목록을 작성하고 싶습니다.
재 : JSL 챌린지하이 돈,
당신은이 JSL 챌린지로 어떤 문제를 해결하려고하십니까? 나는 유전체가 아닌 것을 희망한다. BLAST라는 도구가 있습니다. 사람들은 시퀀스 검색을 위해 사람들이 사용하는데, 여기에는 퍼지 로직뿐만 아니라 채점 메커니즘이 포함되어 있습니다.
텍스트 탐색 만한다면이 점에 대해서는 확신하지 못합니다. Word, TextPad, PDF 뷰어 또는 웹 브라우저에서 찾기 명령을 사용하여 텍스트 코퍼스에서 문자열을 검색하고 발견 한 위치를 알려주는 것과 같다고 생각합니다. 그렇다면 JSL을 사용하여 바퀴를 다시 발명하는 대신 이러한 도구를 사용하는 것이 어떻습니까? 또는 텍스트 탐색기를 사용하여 원하는 것을 찾으십시오.
문맥을 이해하려고 노력하는 것.
크리스
재 : JSL 챌린지
나는 k 길이 문자열을 1 길이 문자열로 변경 한 사실에 대한 위치를 조정할 때까지 이것이 작동하지 않는다는 것을 깨달았습니다. 따라서 하위 문자열이 1 자 이상인 경우 위치를 조정해야합니다. 따라서 최종 "if"절.
str = "acdljkdfjhcdlkjgiucdlekjrfcdcd";
substr = "cd";
pos = loc(words(substitute(str, substr, "#"), ""), "#" );
if (length(substr) > 1, pos += (0::(length(substr)-1)*(nrow(pos)-1)::(length(substr)-1))`);
재 : JSL 챌린지*************** 조정이 필요합니다 .L : 나중에 답장 해주세요 *********************
문자열에 나타나지 않는 문자를 뱅크 할 수 있다면 다음과 같이 할 수 있습니다.
str = "abclkhsdfcdslkjscdlkjlkjcdkljcdcd";
loc(words(substitute(str, "cd", "#"), ""), "#" );
재 : JSL 챌린지필자는 Scripting Index에서이 예제를 기반으로 솔루션을 만들 수있을 것이라고 생각합니다.
Names Default To Here( 1 );
source = "believe";
// [aeiou] matches exactly one vowel
// .*? is a reluctant (vs greedy) match. try it without the ? to see the greedy behavior
// \1 is a back reference to the first ( group -- [aeiou] is inside the first ( group
matches = Regex Match(
source, // a variable allows updating some text
"([aeiou])(.*?)(\1)", // a regex with parens makes back references
">\2<" // the match is replaced by text that uses a back reference
);
Show( source, matches );
// results:
// source = "b>li<VE></VE>