P
OLITECHNIKA
´
S
L ˛
ASKA
W
YDZIAŁ
A
UTOMATYKI
E
LEKTRONIKI I
I
NFORMATYKI
Sprawozdanie
Przetwarzanie tekstu
Wyra˙zenia regularne
Autor: Anna Zieli ´nska
Prowadz ˛
acy ´cwiczenie: dr in˙z. Jacek Kawa
Gliwice, 27 maja 2012
Spis treści
1. Wyrażenia regularne- Cygwin
. . . . . . . . . . . . . . . . . . . . . . . . .
1
. . . . . . . . . . . . . . . . . . . . . . . .
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Zniekształcone i prawidłowe formy ’Obliczenia Inżynierskie’
. . . . . .
3
2. Wyrażenia regularne- Matlab
. . . . . . . . . . . . . . . . . . . . . . . . .
5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Usuwanie średników kończących linijkę w Matlabie
. . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . .
6
Ustalanie liczby kolumn występujących w macierzy
. . . . . . . . . .
6
Usuwanie spacji wokół znaków równa się, nawiasów i średnika
. . . .
7
Zamiana na stały fragment tekstu
. . . . . . . . . . . . . . . . . . . .
7
. . . . . . . . . . . . . . . . . . . . . .
8
. . . . . . . . . . . . . . . . . . . . . . . .
8
2.10 Macierz utworzona w LaTeX
. . . . . . . . . . . . . . . . . . . . . . .
8
1. Wyrażenia regularne- Cygwin
1.1
Daty w różnych formatach
Komenda w Cygwin
#egrep --color ’[0-9]+[\. \-][0-9]*[\. \-][0-9]+’ dane-text.txt
Wynik
1.2
Imiona
Komenda w Cygwin
#grep -E -v ’Ob’ dane-text.txt | grep -E {color ’[A-Z].*[a-z]\b’
Wynik
Ciężko jest wyizolować jedynie imiona z tekstu, a więc najlepszym sposobem jest
wypisanie tych imion.
Komenda w Cygwin
# egrep --color ’Iwona|Ewa|Jeremiasz|Kuba|Anna|Zuzanna|Elwira|Kasia
|Marcin|Jakub’ dane-text.txt
Wynik
2
1. Wyrażenia regularne- Cygwin
1.3
Imiona kobiece
Komenda w Cygwin
#grep -E -v ’Ob’ dane-text.txt | grep -E {color ’[A-Z].*a\b’
Wynik
W języku polskim imiona kobiece kończą się na literę a. Jednak w tym przypadku
nie zostały wyróżnione jedynie imiona kobiece, ale także został wyróżniony Kuba,
innym sposobem jest wypisanie wszystkich imion, które mają zostać podświetlone .
Komenda w Cygwin
#egrep --color ’Iwona|Ewa|Anna|Zuzanna|Elwira|Kasia|’ dane-text.txt
Wynik
1.4. Zniekształcone i prawidłowe formy ’Obliczenia Inżynierskie’
3
1.4
Zniekształcone i prawidłowe formy
’Obliczenia Inżynierskie’
Komenda w Cygwin
#egrep --color ’[0][a-z 1]+[I][Za-z]+’ dane-text.txt
Wynik
2. Wyrażenia regularne- Matlab
2.1
Kod programu
%A=\ l e f t [ \ b e g i n { a r r a y }{ c c c }1&2&3\\4&5&6\\7&8&11111\ end { a r r a y }\ r i g h t
]
n a p i s=c z y t a j T e k s t ( ’ m a c i e r z 2 . t x t ’ )
s t r 1= ’ =\\ l e f t [ \ \ b e g i n { a r r a y } ’
s t r 2= ’ \\ end { a r r a y }\\ r i g h t ] ’
n a p i s = r e g e x p r e p ( n a p i s , ’ [ \ ] ] + [
] ∗ [ ; ] ∗ ’ , ’ ] ’ )%u su w a n i e ; k o ń c z ą c y c h l i n i ę
n a p i s = r e g e x p r e p ( n a p i s , ’ , ’ , ’
’ )%z a m i e n i a p r z e c i n e k na s p a c j ę
n a p i s= r e g e x p r e p ( n a p i s , ’ + ’ , ’
’ )%z a m i e n i a w i ę c e j n i ż 1 s p a c j ę na j e d n ą s p a c j ę
n a p i s 2=r e g e x p r e p ( n a p i s , ’ [ 0 − 9 ] + [ . ] ∗ [ 0 − 9 ] ∗
∗ ’ , ’ c ’ )% z l i c z a i l o s c c
r o z b i j = r e g e x p ( n a p i s 2 ,
’ (ˆ[ˆ=]∗= ∗ ) ( \ [ ) ( [ ˆ ; ] ∗ ) ( [ ; \ ] ] . ∗ ) ’ ,
’ Tokens ’ ) ;
r o z b i j=r o z b i j { 1 } ;
n a p i s 2=
s p r i n t f
( ’{%s } ’ , r o z b i j { [ 3 ] } )%p r z e k s z t a ł c e n i e c i ą g u znaków na t y p s t r i n g
n a p i s= r e g e x p r e p ( n a p i s , ’ [ ] ∗ [ = ] + [
] ∗ [ \ [ ] + [
] ∗ ’ , ’ =[ ’ )%u su w a n i e s p a c j i wokół znaków = [ ] ;
n a p i s= r e g e x p r e p ( n a p i s , ’ [
] ∗ [ ; ] + [
] ∗ ’ , ’ ; ’ )
n a p i s= r e g e x p r e p ( n a p i s , ’ [
] ∗ [ \ ] ] + [
] ∗ ’ , ’ ] ’ )
n a p i s= r e g e x p r e p ( n a p i s , ’ \ [ ’ , n a p i s 2 )%z a m i e n i a [ na o d p o w i e d n i a i l o ś ć c
n a p i s= r e g e x p r e p ( n a p i s , ’ [ { ] + [ −]∗ ’ , ’ { ’ )%z a m i e n i a t e z n a k i na {
n a p i s= r e g e x p r e p ( n a p i s , ’= ’ , s t r 1 )%z a m i e n i a = na n a p i s
n a p i s= r e g e x p r e p ( n a p i s , ’ ] ’ , s t r 2 )%z a m i e n i a ] na n a p i s
n a p i s= r e g e x p r e p ( n a p i s , ’ ; ’ , ’ \\\\ ’ )%z a m i e n i a ; na \\
n a p i s= r e g e x p r e p ( n a p i s , ’
’ , ’& ’ )%z a m i e n i a s p a c j e na &
6
2. Wyrażenia regularne- Matlab
2.2
Usuwanie średników kończących linijkę w
Matlabie
n a p i s= r e g e x p r e p ( n a p i s , ’ + ’ , ’
’ )
Wynik działania kodu:
napis =
B =[-5 2,3; 22.132 3 1;
12312312.312 2 -5]
2.3
Zamiana przecinków na spacje
n a p i s = r e g e x p r e p ( n a p i s , ’ , ’ , ’
’ )
Wynik działania kodu:
napis =
B =[-5 2 3; 22.132 3 1;
12312312.312 2 -5]
2.4
Usuwanie wielokrotnych spacji
n a p i s = r e g e x p r e p ( n a p i s , ’ [ \ ] ] + [
] ∗ [ ; ] ∗ ’ , ’ ] ’ )
Wynik działania kodu:
napis =
B =[-5 2 3; 22.132 3 1; 12312312.312 2 -5]
2.5
Ustalanie liczby kolumn występujących w
macierzy
Dzięki tej instrukcji tekst jest dzielony na części, według podanych kryteriów.
Nastepnie podzielony juz tekst jest przerabiany do wymaganej formy, można w ten
sposób dodawać, usuwać, przestawiać oraz powielać fragmenty tekstu bez naruszenia
podstawowej formy. W przykładzie trzecia komórka tablicy rozbij została powielona.
W tym przypadku przydaje się to do stworzenia odpowiedniej ilości literek ”c”, co
oznacza liczbę kolumn. Polecenie sprintf sprawia, że ciąg znaków jest zamieniany na
typ string.
n a p i s 2=r e g e x p r e p ( n a p i s , ’ [ 0 − 9 ] + [ . ] ∗ [ 0 − 9 ] ∗ ∗ ’ , ’ c ’ )% z l i c z a
i l o s c c
r o z b i j = r e g e x p ( n a p i s 2 ,
’ (ˆ[ˆ=]∗= ∗ ) ( \ [ ) ( [ ˆ ; ] ∗ ) ( [ ; \ ] ] . ∗ ) ’ ,
’ Tokens ’ ) ;
r o z b i j=r o z b i j { 1 } ;
2.6. Usuwanie spacji wokół znaków równa się, nawiasów i średnika
7
n a p i s 2=
s p r i n t f
( ’{%s } ’ , r o z b i j { [ 3 ] } )%p r z e k s z t a ł c e n i e c i ą g u znaków na t y p s t r i n g
Wynik działania kodu:
napis2 =
B =[-ccc; ccc; cc-c]
napis2 =
{-ccc}
2.6
Usuwanie spacji wokół znaków równa się,
nawiasów i średnika
n a p i s= r e g e x p r e p ( n a p i s , ’ [
] ∗ [ ; ] + [
] ∗ ’ , ’ ; ’ )
n a p i s= r e g e x p r e p ( n a p i s , ’ [
] ∗ [ \ ] ] + [
] ∗ ’ , ’ ] ’ )
Wynik działania kodu:
napis =
B=[-5 2 3; 22.132 3 1; 12312312.312 2 -5]
napis =
B=[-5 2 3;22.132 3 1;12312312.312 2 -5]
napis =
B=[-5 2 3;22.132 3 1;12312312.312 2 -5]
2.7
Zamiana na stały fragment tekstu
8
2. Wyrażenia regularne- Matlab
n a p i s= r e g e x p r e p ( n a p i s , ’= ’ , s t r 1 )%z a m i e n i a = na n a p i s
n a p i s= r e g e x p r e p ( n a p i s , ’ ] ’ , s t r 2 )%z a m i e n i a ] na n a p i s
Wynik działania kodu:
napis =
B=\left[\begin{array}{ccc}-5 2 3;22.132 3 1;12312312.312 2 -5]
napis =
B=\left[\begin{array}{ccc}-5 2 3;22.132 3 1;12312312.312 2 -5\end{array}\right]
2.8
Zamiana średników na odstępy
n a p i s= r e g e x p r e p ( n a p i s , ’ ; ’ , ’ \\\\ ’ )%z a m i e n i a ; na o d s t ę p
Wynik działania kodu:
napis =
B=\left[\begin{array}{ccc}-5 2 3\\22.132 3 1\\12312312.312 2 -5\end{array}\right]
2.9
Zamiana spacji na znak &
n a p i s= r e g e x p r e p ( n a p i s , ’
’ , ’& ’ )%z a m i e n i a s p a c j e na &
napis =
B=\left[\begin{array}{ccc}-5&2&3\\22.132&3&1\\12312312.312&2&-5\end{array}\right]
2.10
Macierz utworzona w LaTeX
B =
−5
2
3
22.132
3
1
12312312.312 2 −5