Centos7 Media 설치

Linux/CentOS 2017. 6. 6. 16:56 |

'Linux > CentOS' 카테고리의 다른 글

[CentOS7] Java 설치  (0) 2017.06.07
[CentOS7] NVIDIA Driver 설치  (0) 2017.06.06
[CentOS6] R setup  (0) 2016.04.05
[CentOS7] setup ffmpeg && cuda && opencv && qt5  (0) 2016.03.20
[CentOS7] 초기 설정  (0) 2016.03.19
Posted by scii
:

문자열의 format 함수를 이용하면, 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있다.



'Houdini > Python' 카테고리의 다른 글

[REGEX] Greedy vs Non-Greedy  (0) 2016.10.09
[PySide] Python panel Test UI  (0) 2016.01.25
Scene View Select (obj, geo, dop, etc...)  (0) 2013.07.11
rot, trans, scale  (0) 2013.05.25
hou Module Functions  (0) 2013.04.01
Posted by scii
:

정규식에서 Greedy(탐욕스러운)란 어떤 의미일까?


"<.*>" 정규식의 매치 결과로 <html> 문자열이 리턴되기를 기대했다. 하지만 * 메타 문자는 매우 탐욕스러워서 매치할 수 있는 최대한의 문자열인 <html><head><title>Title</title></head></html> 문자열을 모두 소모시켜 버렸다. 어떻게 하면 이 탐욕스러움을 제한하고 <html> 이라는 문자열까지만 소모되도록 막을 수 있을까?

다음과 같이 Non-Greedy 문자인 ? 을 사용하면, * 의 탐욕을 제한할 수 있다.


Non-Greedy 문자인 ? 은 *?, +?, ??, {m, n}? 와 같이 사용할 수 있다.

가능한 한 가장 최소한의 반복을 수행하도록 도와주는 역할.


'Houdini > Python' 카테고리의 다른 글

고급 문자열 formatting  (0) 2016.10.10
[PySide] Python panel Test UI  (0) 2016.01.25
Scene View Select (obj, geo, dop, etc...)  (0) 2013.07.11
rot, trans, scale  (0) 2013.05.25
hou Module Functions  (0) 2013.04.01
Posted by scii
:

[REGEX] Substitude

Programming/Python 2016. 10. 9. 22:24 |

sub 메서드를 이용하면 정규식과 매치되는 부분을 다른 문자로 쉽게 바꿀 수 있다.


sub 메서드의 첫 번째 입력 인수는 "바꿀 문자열"이 되고, 두 번째 입력 인수는 "대상 문자열"이 된다. 

바꾸기 횟수를 제어하려면 다음과 같은 세 번째 입력 인수로 count값을 넘기면 된다.

comp.sub('colour', 'blue socks and red shoes', count=1)


subn 역시 sub와 동일한 기능을 하지만 리턴되는 결과를 튜플로 리턴한다는 차이가 있다. 리턴된 튜플의 첫 번째 요소는 변경된 문자열이고, 두 번째 요소는 바꾸기가 발생한 횟수이다.




sub 메서드 사용 시 참조 구문 사용하기

위 예는 "이름 + 전화번호"의 문자열을 "전화번호 + 이름" 으로 바꾸는 예이다. sub의 바꿀 문자열 부분에 "\g<그룹명> 을 이용하면 정규식의 그룹명을 참조 할 수 있다.

그룹명 대신 참조 번호를 이용해도 마찬가지의 결과가 리턴된다.




sub 메서드의 입력 인수로 함수 넣기

sub 메서드의 첫 번째 입력 인수로 함수를 넣을 수도 있다. 

Dec2Hex 함수는 match 객체(위에서 숫자에 마치되는)를 입력으로 받아 16진수로 변환하여 리턴하는 함수이다. sub의 첫 번째 입력 인수로 함수를 사용할 경우, 해당 함수의 첫 번째 입력 인수에는 정규식과 매치된 match 객체가 입력된다. 그리고 매치되는 문자열은 함수의 리턴 값으로 바뀌게 된다.




Example

전화번호의 마지막 숫자 4개를 #으로 변경하는 예제


'Programming > Python' 카테고리의 다른 글

[REGEX] 전방 탐색 (Lookahead Assertions), 후방 탐색  (0) 2016.10.08
[REGEX] 그룹 재활용  (0) 2016.10.08
Python Function : any(), all()  (0) 2014.09.15
이진 트리  (0) 2013.05.31
bisect Module  (0) 2013.05.17
Posted by scii
:

정규식 .+: 과 일치하는 문자열로 http: 가 리턴되었다. 만약 http:라는 검색 결과에서 : 을 제외하고 출력하려면 어떻게 해야할까?

위 예는 그나마 간단하지만 훨씩 복잡한 정규식이어서 그룹핑은 추가로 할 수 없다는 조건까지 더해진다면 어떻게 해야 할까?

이럴 때 사용할 수 있는 것이 바로 전방 탐색이다.


전방 탐색에는 긍정(Positive)과 부정(Negative)의 2종류가 있다.

(?=...)   긍정형 전방 탐색   -   ...에 해당되는 정규식과 매치되어야 하며, 조건이 통과되어도 문자열이 소모되지 않는다.

(?!...)   부정형 전방 탐색   -   ...에 해당되는 정규식과 매치되지 않아야 하며, 조건이 통과되어도 문자열이 소모되지 않는다.


긍정형 전방 탐색

정규식 중 :에 해당하는 부분에 긍정형 전방 탐색 기법이 적용되어 (?=:)으로 변경되었다. 이렇게 되면 기존 정규식과 검색에서는 동일한 효과를 발휘하지만 :에 대당되는 문자열이 정규식 엔진에 의해 소모되지 않아(검색에는 포함되지만 검색 결과에는 제외됨) 검색 결과에서는 :이 제거된 후 리턴되는 효과가 있다.



.*[.].*$

이 정규식은 파일명 + . + 확장자를 나타내는 정규식이다. 이 정규식은 foo.bar,  autoexec.bat, sendmail.cf 같은 형식의 파일과 매치될 것이다. 이제 이 정규식에 "확장자가 bat인 파일은 제외해야 한다."는 조건을 추가해 보자. 가장 먼저 생각할 수 있는 정규식은 다음과 같을 것이다.

.*[.][^b].*$

이 정규식은 확장자가 b라는 문자로 시작하면 안 된다는 의미이다. 하지만 이 정규식은 foo.bar라는 파일마저 걸러내 버린다. 정규식을 다음과 같이 수정해보자.

.*[.]([^b]..|.[^a].|..[^t])$

이 정규식은 | 메타 문자를 사용하여 확장자의 첫 번째 문자가 b가 아니거나 두 번째 문자가 a가 아니거나 세 번째 문자가 t가 아닌 경우를 의미한다. 이 정규식에 의하여 foo.bar는 제외되지 않고 autoexec.bat은 제외되어 만족스러운 결과를 리턴한다. 하지만 이 정규식은 아쉽게도 sendmail.cf처럼 확장자의 문자 개수가 2개인 케이스를 포함하지 못 하는 오동작을 하기 시작한다.

위의 것을 다음과 같이 바꾸어야 한다.

.*[.]([^b].?.?|.[^a]?.?|..?[^t]?)$

확장자의 문자 개수가 2개여도 통과되는 정규식이 만들어졌다. 하지만 정규식은 점점 더 복잡해지고 이해하기 어려워진다.

그런데 여기서 bat 파일말고 exe파일도 제외하라는 조건이 추가로 생긴다면 어떻게 될까? 이 모든 조건을 만족하는 정규식을 구현하려면 패턴은 더욱 더 복잡해져야만 할 것이다.


부정형 전방 탐색

이러한 상황의 구원 투수는 바로 부정형 전방 탐색이다. 위 케이스는 부정형 전방 탐색을 사용하면 다음과 같이 간단하게 처리된다.

.*[.](?!bat$).*$

확장자가 bat가 아닌 경우에만 통과된다는 의미이다. bat라는 문자열이 있는지 조사하는 과정에서 문자열이 소모되지 않으므로 bat가 아니라고 판단되면 그 이후 정규식 매칭이 진행된다.


exe 역시 제외하라는 조건이 추가되더라도 다음과 같이 간단히 표현할 수 있다.

.*[.](?!bat$|exe$).*$




Example

긍정형 전방 탐색으로 .com, .net 이 아닌 것을 걸러내는 예제


'Programming > Python' 카테고리의 다른 글

[REGEX] Substitude  (0) 2016.10.09
[REGEX] 그룹 재활용  (0) 2016.10.08
Python Function : any(), all()  (0) 2014.09.15
이진 트리  (0) 2013.05.31
bisect Module  (0) 2013.05.17
Posted by scii
:

그룹 재활용


'Programming > Python' 카테고리의 다른 글

[REGEX] Substitude  (0) 2016.10.09
[REGEX] 전방 탐색 (Lookahead Assertions), 후방 탐색  (0) 2016.10.08
Python Function : any(), all()  (0) 2014.09.15
이진 트리  (0) 2013.05.31
bisect Module  (0) 2013.05.17
Posted by scii
:

CentOS 기준으로 쓴다.


~/.ideavimrc


set visualbell

set noerrorbells


이렇게 저장하고 에디터 재시작하면, 비프음 소리가 나지 않는다.!!!

'Programming > etc' 카테고리의 다른 글

[PyCharm] external tools Settings  (0) 2016.04.13
vim-go  (0) 2016.03.02
[Linux] qtcreator 와 python 연결  (0) 2016.02.23
[Linux] Python Virtual Env Setup  (0) 2016.02.20
[CentOS] go language setup  (0) 2016.02.20
Posted by scii
:

delete 규칙

- 한 열이나 여러 열의 값을 지우는 데에 delete를 사용할 수 없다.

- where 절에 따라 한 행이나 여러 행들을 지울 수 있다.


ex) DELETE FROM your_table

-> 이렇게하면 테이블의 모든 행이 지워진다.


ex) DELETE FROM your_table WHERE act='aa';

-> your_table의 act값이 aa면 그 행이 지워진다.



update 규칙

- 한 열 또는 열들의 값을 변경하는 데 update를 사용할 수 있다.

ex) UPDATE your_table SET first_column = 'newvalue', second_column = 'another_value';

- where 절에 따라 한 행 또는 여러 행을 변경하는 데에 update를 사용할 수 있다.

'Programming > DataBase' 카테고리의 다른 글

[MAC] MariaDB 설치  (0) 2018.07.08
keywork BETWEEN, IN  (0) 2016.08.15
Basic  (0) 2016.07.31
SQL 데이터 조작문 - 데이터 삽입  (0) 2014.09.08
SQL 데이터 조작문 - 데이터 갱신  (0) 2014.09.08
Posted by scii
: