Как вывести только один результат из нескольких регулярных выражений (C ++) - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь выполнить поиск с помощью регулярных выражений, чтобы найти такие слова, как "длинная тонна", игнорируя любые пробелы между "длинной" и "тонной", что, я думаю, было бы лучше всего для регулярных выражений.с кодом ниже, он будет распечатывать каждый преобразованный вывод, но я пытаюсь напечатать только один результат.ех.если я введу 12 кг, я бы хотел, чтобы мой результат печатал только преобразованную строку в фунты.

До сих пор я пытался:

  • удалить точку с запятой после регулярного выражения
  • добавить {} скобки до и после регулярного выражения
  • запускать раздел кода за разделом, копируя и вставляя в другой проект (я считаю, что это регулярное выражение, с которым у меня возникают проблемы)

    #include <iostream> 
    #include <string>
    #include <regex>
    using namespace std;
    int main() 
    { 
        cout << "Enter your mass with unit: "; 
        double earthMass;
        string unit; 
        string tolower(unit);
    
        cin >> earthMass >> unit;
    
        regex kg("kg|kgs");
        if (regex_match("kg", kg))
        {
            double dKgToLb;
            dKgToLb = (earthMass * 2.20462);
            cout << "your converted mass is : " << dKgToLb << " lb" << endl;
        }
        regex pound("lb|lbs");
        if (regex_match("lb", pound))
        {
            double dLbToKg;
            dLbToKg = (earthMass * 0.453592);
            cout << "your converted mass is : " << dLbToKg << " kg" << endl;
        }
        regex longTonne("long\\s*tonne|lg\\s*tn");
        if (regex_match("long tonne", longTonne))
        {
            double dLongToShort;
            dLongToShort = (earthMass * 1.12);
            cout << "your converted mass is : " << dLongToShort << " sh tn" << endl;
        }
        regex shortTonne("short\\s*tonne|sh\\s*tn");
        if (regex_match("short tonne", shortTonne))
        {
            double dShortToLong;
            dShortToLong = (earthMass * 0.892857);
            cout << "your converted mass is : " << dShortToLong << " lg tn" << endl;}
        }
        else if (!cin.good())
        {
            cerr << "your input is invalid\n";
            return EXIT_FAILURE;
        }
    }
    
...