ProgrammingのTipなど

正規表現(C++)

C++標準ライブラリのregexクラスで正規表現を使えます
#include <regex>

使い方

必要な準備
regex 規則オブジェクト変数("検索したい正規表現");
smatch 検索結果の変数;
検索関数
regex_search(文字列, 検索結果変数, 規則オブジェクト);

検索例のプログラム

コンパイルは
g++ -c main.cpp
g++ -o a main.o
もしくは下記のmakefileでmake
main.cpp
#include <iostream>
#include <regex>
using namespace std;

regex r1("pascal");
smatch m1;

int main()
{
	string s1 = "ssdjsukpascalsfsie";
	if (regex_search(s1,m1,r1))

	  cout << m1.str() << endl;
	  cout << m1.position() << endl;
  	  cout << m1.length() << endl;
	}
}
$pascal
$7
$6

正規表現

任意の文字
.
右の文字が0個以上並ぶ
*
右の文字が1個以上並ぶ
+
任意の文字がいくつも並ぶ
*. 
abcdeのうちのどれか
[abcde]
行頭の文字列がABC
^ABC
行の最後がABC
ABC$
最初の文字がAからZまでで次の文字が1から5までの文字
[A-Z1-5]

makefile
SOURCE = main
EXTENSIONTYPE = cpp
INCLUDE = 
LIBDIR  = 
CC = g++
CFLAGS = 
LIBRARIES = 
EXENAME = a
CPPVERSION = -std=c++20
OBJ = $(SOURCE).o

all: $(OBJ)
	$(CC) $(CFLAGS) $(INCLUDE) -o $(EXENAME) $(LIBDIR) $(OBJ) $(LIBRARIES) $(CPPVERSION)

$(SOURCE).o: $(SOURCE).$(EXTENSIONTYPE)
	$(CC) $(CFLAGS) $(INCLUDE) -c $^ $(LIBDIR) $(LIBRARIES)	$(CPPVERSION)


clean:
	rm $(OBJ) $(EXENAME) 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます