다시한번 부탁드립니다.

voodoostein의 이미지

여기에 벌써 2번이나 도움을 청했는데,

제 머리가 나빠서 그런지 전혀 진전이 없네요 ㅠㅠ

지금 책상에 돌가루가 수북히;;;;;;

제가 도움을 청하고자 하는것은 이전에 제가 올렸던 거랑 비슷한 문제입니다.

자꾸 더 스크립트를 발전시킬려구 해보니 점점 복잡해지고 꼬이고

엉망이 되어버립니다.

여기저기 예제 보면서 연습도 해보는데 제가 원하는 답이 안나오네요

에휴

그래서 도움을 청합니다. ㅠㅠ

저보고 끈기가 없다느니 그런 소리 하셔도 좋습니다.

따끔한 말한마디나 프로그램 공부할때 조언좀 해주세요

그럼 제가 원하는 스크립트는

이메일 필터에 들어갈 스크립트입니다.

예를 들어 viagra라는 정상 단어는 당연히 필터링을 안하구

v l a g r a, v 1 a g r a라는 단어만 찾는 것이죠

이걸 필터에 넣을려구 스크립트로 짜고 있습니다.

정규식으로 표현만하면 되니깐요.

지금 i가 들어왔을때 L로 치환하는 거 까지 했습니다.

a="[^a-z]"                                      # regexp for wrod
b="[^a-z]?"                                     # regexp for wrod
c="\\b"                                         # regexp for wrod
d="\\s"                                         # regexp for wrod
i="[^a-km-z]"                                   # regexp for pass L
l="[^a-hj-z]"                                   # regexp for pass I
filter=filter/wrod_not_word.txt                 # for saved Character trick file
OUT="output"
NUM=0
for input in $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}
        do
                if [ $input == i ]
                then
                        echo -n "$i " >> $OUT

                elif [ $input == l ]
                then
                        echo -n  "$l " >> $OUT

                else
                        echo -n "$input " >> $OUT

                fi
                done
                                #echo -n "$b"
                        echo ""
                        NUM=`expr $NUM + 1`

read var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 < $OUT

echo "$var1 $var2 $var3 $var4 $var5 $var6 $var7 $var8 $var9 $var10 $var11 $var12"

위와 같이 치환 하는 스크립트를 짰습니다.

문제는 viagra를 넣으면

\s[^a-z][^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?[^a-z][^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?[^a-z][^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?[^a-z][^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?[^a-z][^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?[^a-z]\s
\bv[^a-z]i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]a\b

식으로 나와야 한다는겁니다.
위 결과를 보시면 처음줄은 첫번째 문자(V)를 [^a-z]로대체
두번째는 두번째 문자 i를 [^a-z]로 대체하는 식으로.. 나갑니다.

여기까지는 제가 스크립트 두개를 돌리는식으로 했습니다. ㅠㅠ
촙5님감사합니다. ^^

그런데 여기서 i를 속이는 줄(두번째줄)에서 [^a-z]대신
[^a-km-z]를 넣고 싶습니다.
L은 [^a-hj-z]이걸루 넣고 싶습니다.
그외 다른 단어들을 속이는 경우([^a-z]가 들어간 경우)는 그대로 넣구 싶구요

제가 원하는 결과치는
\s[^a-z][^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?[^a-km-z][^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?[^a-z][^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?[^a-z][^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?[^a-z][^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?[^a-z]\s
\bv[^a-z]i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]a\b
위 결과처럼 나왔으면 좋겠습니다.

볼드체로 되어있는것만 바꾸면 되는데 ㅠㅠ

이게 안되네요 ㅠㅠ

if문 3-4개 쓴거 같은데 ㅠㅠ

도와주세요 ㅠㅠ

과연 case,do,while,if,until다 써야하는지
아니면 몇개만 써야하는지 ㅠㅠ

[/code]

버려진의 이미지

저라면... (워낙 단순한 성격이라)

그냥 /v?agra/ 를 충족하는지 검사하고..

이런식으로 몇개 만들어놓을 것 같습니다.

보통 단어인데 금지될 위험이 있는지는 확인해야겠죠.

치환되는 문자도 보통 i, l, 1이런것들이니 그다지 경우의 수가 많지 않을 것 같아서 말입니다. :roll:

ed.netdiver의 이미지

([Vv] *(1|l) *[Gg] *[Rr] *[Aa] *)+

정도면 어떨까 싶습니다만...

혹은 검색할 string 파일을 사전파일로 하나 두고서,
한단어씩 읽어들인담에
각 글자들의 앞뒤에 ' *'두고 글자 하나씩을 [^'문자']안에 두고
루프를 돌리는 정도는 어떨지...(여러글자를 negate하는 경우도
상정해서...)

어째 넘 어설퍼보이는데, 다른 고수님들의 명쾌한 답변 부탁드립니당^^;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

/v\s*[i1l]\s*a\s*g\s*r\s*a/i

과연... :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.