tgparkk / notepad

1 stars 0 forks source link

정규식 #8

Open tgparkk opened 4 months ago

tgparkk commented 4 months ago

std::string input = "POLYGON ((45701992.270507812 12941412.311279297, 45702002.931152344 12941414.055908203, 45702010.881347656 12941419.309326172, 45702036.897949219 12941446.035888672, 45702045.763183594 12941458.020507812, 45702053.786132812 12941472.791503906, 45702056.544921875 12941482.754638672, 45702058.575195312 12941486.939697266, 45702112.231933594 12941550.266845703, 45702119.016601562 12941558.274414062, 45702124.831054687 12941562.399658203, 45702147.228515625 12941578.290527344, 45702152.5 12941582.030273437, 45702157.100585937 12941593.31640625, 45702170.104980469 12941625.218017578, 45702169.401367187 12941637.911865234, 45702157.948730469 12941648.681396484, 45702147.185546875 12941653.565673828, 45702069.421386719 12941675.679199219, 45702055.552734375 12941676.786376953, 45702037.813964844 12941673.385498047, 45702027.940917969 12941668.365478516, 45701967.45703125 12941614.238525391, 45701911.990722656 12941564.436035156, 45701904.212402344 12941553.79296875, 45701899.249023437 12941539.471923828, 45701900.299316406 12941518.433837891, 45701904.916015625 12941499.849121094, 45701912.076660156 12941482.819091797, 45701966.227539062 12941420.048095703, 45701979.813476562 12941413.177490234, 45701992.270507812 12941412.311279297), (45701991.453125 12941431.293701172, 45701984.759765625 12941431.522216797, 45701977.946289062 12941435.003662109, 45701928.254394531 12941492.782470703, 45701922.959960937 12941505.80078125, 45701919.084472656 12941521.282470703, 45701918.060546875 12941536.799072266, 45701921.002441406 12941544.899902344, 45701926.053222656 12941551.659667969, 45701980.141601562 12941600.092529297, 45702038.689941406 12941652.698486328, 45702043.978027344 12941655.412841797, 45702056.5625 12941657.813232422, 45702066.019042969 12941656.986328125, 45702140.6953125 12941635.708740234, 45702147.816894531 12941632.609130859, 45702152.154296875 12941629.941650391, 45702151.450683594 12941628.827880859, 45702141.094726562 12941602.626220703, 45702137.62890625 12941593.856933594, 45702132.553710937 12941590.376953125, 45702111.678710937 12941576.062988281, 45702106.225585937 12941572.323730469, 45702099.150390625 12941563.976806641, 45702042.6875 12941497.359619141, 45702038.782226562 12941489.500732422, 45702036.169921875 12941479.91015625, 45702029.752441406 12941468.249511719, 45702022.416503906 12941458.336181641, 45701998.603027344 12941433.808837891, 45701995.980957031 12941431.739013672, 45701991.453125 12941431.293701172))";

int main() {
    // 정규식 패턴
    std::regex pattern("\\b(\\d+\\.\\d+)\\b");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        std::cout << (*iter)[1] << std::endl;
        ++iter;
    }

    return 0;
}
int main() {
// 정규식 패턴
    std::regex pattern("(POLYGON)|(\\d+\\.\\d+)");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        // 만약 매치가 POLYGON이면 매치된 문자열을 출력
        if ((*iter)[1].matched)
            std::cout << (*iter)[1] << std::endl;
        // 숫자를 출력
        else if ((*iter)[2].matched)
            std::cout << (*iter)[2] << std::endl;

        ++iter;
    }

    return 0;
}
int main() {
// 정규식 패턴
    std::regex pattern("\\(([^\\)]+)\\)");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        // 괄호 안의 숫자를 출력
        std::cout << "Group: " << (*iter)[1] << std::endl;
        ++iter;
    }

    return 0;
}
int main() {
   // 정규식 패턴
    std::regex pattern("(POLYGON)\\s*\\(\\s*((?:-?\\d+\\.\\d+\\s?)+)\\)");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        // 'POLYGON' 문자열과 괄호 안의 숫자를 출력
        std::cout << "Polygon Type: " << (*iter)[1] << std::endl;
        std::cout << "Coordinates: " << (*iter)[2] << std::endl;
        ++iter;
    }

    return 0;
}
tgparkk commented 4 months ago
// 정규식 패턴
    std::regex pattern("POLYGON\\s*\\(\\s*\\(?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\s?\\,?\\s?(\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\)?\\)");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        // 정규식 패턴에서 매치된 부분을 출력
        for (size_t i = 1; i < iter->size(); ++i) {
            std::cout << "Group " << i << ": " << (*iter)[i].str() << std::endl;
        }
        ++iter;
    }

    return 0;
tgparkk commented 4 months ago

(45701991.453125 12941431.293701172, 45701984.759765625 12941431.522216797, 45701977.946289062 12941435.003662109, 45701928.254394531 12941492.782470703, 45701922.959960937 12941505.80078125, 45701919.084472656 12941521.282470703, 45701918.060546875 12941536.799072266, 45701921.002441406 12941544.899902344, 45701926.053222656 12941551.659667969, 45701980.141601562 12941600.092529297, 45702038.689941406 12941652.698486328, 45702043.978027344 12941655.412841797, 45702056.5625 12941657.813232422, 45702066.019042969 12941656.986328125, 45702140.6953125 12941635.708740234, 45702147.816894531 12941632.609130859, 45702152.154296875 12941629.941650391, 45702151.450683594 12941628.827880859, 45702141.094726562 12941602.626220703, 45702137.62890625 12941593.856933594, 45702132.553710937 12941590.376953125, 45702111.678710937 12941576.062988281, 45702106.225585937 12941572.323730469, 45702099.150390625 12941563.976806641, 45702042.6875 12941497.359619141, 45702038.782226562 12941489.500732422, 45702036.169921875 12941479.91015625, 45702029.752441406 12941468.249511719, 45702022.416503906 12941458.336181641, 45701998.603027344 12941433.808837891, 45701995.980957031 12941431.739013672, 45701991.453125 12941431.293701172)

// 정규식 패턴
    std::regex pattern(",\\s*");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_token_iterator iter(input.begin(), input.end(), pattern, -1);
    std::sregex_token_iterator end;

    while (iter != end) {
        std::cout << *iter << std::endl;
        ++iter;
    }
tgparkk commented 4 months ago
// 정규식 패턴
    std::regex pattern("[^\\s,]+");

    // 정규식을 사용하여 매치된 결과를 출력
    std::sregex_iterator iter(input.begin(), input.end(), pattern);
    std::sregex_iterator end;

    while (iter != end) {
        std::cout << (*iter)[0] << std::endl;
        ++iter;
    }

    return 0;
}