반응형

정규표현식의 기본 문법

정규표현식은 소프트웨어에 따라서 방식이나 지원 범위가 다를 수 있습니다.

^The The로 시작하는 문자열
of despair$ of despair로 끝나는 문자열
^abc$ abc로 시작하고 abc로 끝나는 문자열 (abc 라는 문자열도 해당됨)
notice notice가 들어 있는 문자열

 

ab* a 다음에 b가 0개 이상 (a, ab, abbb 등등)
ab+ a 다음에 b가 1개 이상 (ab, abbb 등등)
ab? a 다음에 b가 있거나 없거나 (ab 또는 a)

 

ab{2} a 다음에 b가 2개 있는 문자열 (abb)
ab{2,} a 다음에 b가 2개 이상 (abb, abbbb 등등)
ab{3,5} a 다음에 b가 3개에서 5개 사이 (abbb, abbbb, 또는 abbbbb)

*, +, ?는 각각 {0,}, {1,}, {0,1}과 같습니다.

( )는 문자열을 묶음 처리할 때 사용
a(bc)* a 다음에 bc가 0개 이상 (묶음 처리)
a(bc){1,5} a 다음에 bc가 1개에서 5개 사이

 

hi|hello hi hello가 들어 있는 문자열
(b|cd)ef bef 또는 cdef
(a|b)*c a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴

 

. (점) 임의의 한 문자
^.{3}$ 3문자로만 되어 있는 문자열

 

[ ] 괄호 안에 있는 내용 중 임의의 한 문자
[^ ] 첫문자로 ^를 쓰면 괄호 내용의 부정. 즉 괄호 안에 포함되지 않는 한 문자
[ab] a 또는 b (a|b 와 동일한 표현)
[a-d] 소문자 a에서 d까지 (a|b|c|d 또는 [abcd] 와 동일)
^[a-zA-Z] 영문자로 시작하는 문자열
[0-9]% % 문자 앞에 하나의 숫자가 붙어 있는 패턴
%[^a-zA-Z]% 두 % 문자 사이에 영문자가 없는 패턴

 

특수 문자 자체를 검색하기 및 사용하기
\^ ^ \. .
\[ [ \$ $
\( ( \) )
\| | \* *
\+ + \? ?
\{ { \\ \
\n 줄넘김 문자 \r 리턴 문자
\w 알파벳과 _ (언더바) \W 알파벳과 _ 가 아닌 것
\s 빈 공간(space) \S 빈 공간이 아닌 것
\d 숫자 \D 숫자가 아닌 것
\b 단어와 단어 사이의 경계 \B 단어 사이의 경계가 아닌 것
\t Tab 문자 \xnn 16진수 nn에 해당하는 문자

[ ] 안에서는 특수 문자가 모두 효력을 잃게 됩니다.

검색 + 치환을 위한 하부식(부분식)
( ) 둘러싼 부분은 각각 하나의 덩어리로 취급해서,
검색시 ( ) 안에 해당되는 내용들을 변경할 내용에서 그대로 가져다 이용할 수 있습니다.
검색된 각각의 ( )안에 해당되는 내용은 변경할 내용에서 $1, $2, .. 등으로 지정해서 쓸 수 있습니다.
예제) mp3파일 이름 바꾸기
검색 : (.*) - (.*)\.mp3 .*은 길이에 상관없이 임의의 문자열, \.은 점
치환 : $2 - $1.mp3 앞에서 검색한 ( )안에 해당되는 내용끼리 순서 바꾸기
ex) "제목 - 연주자.mp3" Þ "연주자 - 제목.mp3"
앞에서 정의한 하부식을 다시 활용하기 (제가 잘못 이해한 것일 수도 있는데)
\n은 ( ) 하부식 중에서 n번째 하부식을 가리킵니다.
예제) (.+)\1+
\1로 되어 있으니까 첫번째 부분식 (.+)를 가리킵니다. 위 내용을 해석하자면, 일단 (.+)가 있으니까 이에 해당되는 내용을 찾고, \1+이 있으니까 첫번째 부분식 (.+)와 똑같은 내용이 그 뒤에 1번 이상 있는 문자열을 찾습니다.
예제) abab같은 문자열이 위에 해당되는데, 일단 (.+) 즉 임의의 문자열 ab를 찾고 그 뒤에 \1+로 첫번째 부분식을 다시 1번 이상 있는 것을 찾으니까 뒤의 ab가 이에 해당합니다.

 

변경자 ? 검색 방식 변경
(?i) 대소문자 무시 (기본값)
(?-i) 대소문자 구분
(?g) "greedy" 모드로 전환 (기본값)
(?-g) "greedy" 모드 해제, 따라서 "+"는 "+?"과 동일한 것으로 인식



출처: https://iamnotokay.tistory.com/85 [I am not Okay]

반응형
반응형

ome tips for using full-text search in SQL Server 2016


Use a full-text query instead of the LIKE Transact-SQL predicate if you need to
query 
formatted binary data or query a large amount of unstructured text data.

A full-text query against millions of rows of text data can take only seconds; whereas

a LIKE query against the same data can take minutes to return.

Reduce the full-text unique key size.

To create a full-text index, the table to be indexed must have a unique index. Try to

select a numeric column as the full-text unique key to increase the speed of full-text

population. If the table to be indexed does not have numeric unique index, consider

creating numeric unique index.

Set the virtual memory size to at least 3 times the physical memory installed in

the computer, and set the SQL Server ‘max server memory’ server configuration

option to half the virtual memory size setting (1.5 times the physical memory).

Because working with full-text search is very resource expensive, you should have

enough physical and virtual memory.

Update the statistics on the clustered index or the full-text key for a full population.

Using so, you can help a multi-range population to generate good partitions on the table.

Set the ‘max full-text crawl range’ option to the number of CPUs on the server box.

Setting this option to the number of CPUs on the server box allows optimize CPU

utilization, which improves crawl performance during a full-text index crawl.

Because the ‘max full-text crawl range’ configuration option is an advanced option, you

should set the ‘show advanced option’ option to 1 to make the ‘max full-text crawl

range’ available.

Note. Setting the ‘max full-text crawl range’ option takes effect immediately without

a server restart.

Consider using the full-text property searching.

SQL Server 2016 supports property searching. Now, you can configure a full-text

index to support property-scoped searching on properties, which are emitted by IFilters.

Use an integer data type for the first column of the clustered index of the base table.

Using an integer data type for the first column of the clustered index of the base table

produces the highest full-text index population speed.

Build a secondary index on a timestamp column.

By using so, you can improve the performance of incremental population.

If you have several physical disks, place the database files separately from the

full-text catalog files.

In this case, you can improve the speed of full-text queries, because multiple disks

can process input/output requests concurrently.

Consider using search across multiple columns.

In SQL Server 2016, you can specify an arbitrary number of columns in a full-text

predicate via a column list.

If you have several physical disks, create several Pagefile.sys files, so that each

Pagefile.sys file will be placed on its own physical disk.

Spreading paging files across multiple disk drives and controllers improves

performance on most disk systems because multiple disks can process input/output

requests concurrently.

Use the top_n_by_rank parameter with CONTAINSTABLE or FREETEXTTABLE.

It can be used to restrict the number of rows returned. The top_n_by_rank parameter

specifies that only the n-highest ranked matches, in descending order, will be returned.

Try to use the CONTAINS or FREETEXT predicates instead of the CONTAINSTABLE

or FREETEXTTABLE functions to simplify the query’s text.

Because qualifying rows returned by the CONTAINSTABLE or FREETEXTTABLE

rowset functions must be explicitly joined with the rows in the original SQL Server table,

the queries that use the CONTAINSTABLE and FREETEXTTABLE functions are more

complex than those that use the CONTAINS and FREETEXT predicates.

Consider limit the size of the buffer pool before you perform a full population.

If the sqlservr.exe process tries to grab all available memory for the buffer pool,

out-of-memory conditions and failure to allocate shared memory can occur for the

fdhost.exe process. You can limit the size of the buffer pool by setting the

‘max server memory’ server option to leave enough memory for the fdhost.exe

process and operating system use.

Use full-text data definition language (DDL) statements to create, modify, and
drop 
full-text catalogs and indexes.

You can use CREATE FULLTEXT CATALOG, ALTER FULLTEXT CATALOG,

DROP FULLTEXT CATALOG, CREATE FULLTEXT INDEX, ALTER FULLTEXT

INDEX and DROP FULLTEXT INDEX statements to create, modify, and drop

full-text catalogs and indexes. Because using the full-text data definition language
(DDL) statements is more efficient than using the stored procedures and the stored
procedures, which used to work with full-text catalogs and indexes, will be removed
in a future version of SQL Server, you should use full-text data definition language
(DDL) statements to create, modify, and drop full-text catalogs and indexes.

Consider using the NEAR option of the CONTAINS predicate or CONTAINSTABLE

function.

SQL Server 2016 supports the NEAR option of the CONTAINS predicate or

CONTAINSTABLE function. By using the custom NEAR option you can do the following:

– specify the maximum number of non-search terms that separate the first and last
search terms in a match

– specify that words and phrases are matched only if they occur in the order in which

you specify them.


Set the ‘awe enabled’ server configuration option to 1 if you have more than

4 gigabytes (GB) of physical memory.

Beginning in SQL Server 2008, the full-text engine can use AWE memory because

the full-text engine is part of the sqlservr.exe. Because the ‘awe enabled’ configuration

option is an advanced option, you should set the ‘show advanced option’ option to 1

to make the ‘awe enabled’ available.

Note. You must restart the SQL Server 2016 to apply changes to the ‘awe enabled’ option.


Make full-text index population during periods of low database access.

Because full-text index population takes some time, these updates should be
scheduled during CPU idle time and slow production periods.

Assign a very large table (a table that has millions of rows) to its own full-text catalog.

This can improve performance, and can be used to simplify administering and monitoring.

 

출처: https://www.sswug.org/alexanderchigrik/sql-server/some-tips-for-using-full-text-search-in-sql-server-2016/

반응형
반응형

 

 

 

//- 문자형을 숫자형으로 변환하기

 

var 변수 = parseInt(문자);    //문자를 정수형 숫자로 변환해줌

var 변수 = parseFloat(문자);     //문자를 실수형 숫자로 변환해줌

var 변수 = Nember(문자);    //문자를 정수&실수형 숫자로 변환해줌

 

//예제)

var x = "999";    //문자형 999

var y = "99.99";    //문자형 99.99

var a = parseInt(x);    //숫자형 정수 999

var b = parseInt(y);    //숫자형 정수 99

var a = parseFloat(x);    //숫자형 실수 999

var b = parseFloat(y);    //숫자형 실수 99.99

var a = Number(x);    //숫자형 정수 999

var b = Number(y);    //숫자형 실수 99.99

 

var x = "a999";    //문자형 a999

var y = "a99.99";    //문자형 a99.99

var a = parseInt(x);    //숫자형 NaN

var b = ParseInt(y);    //숫자형 NaN

var a = parseFloat(x);    //숫자형 NaN

var b = parseFloat(y);    //숫자형 NaN

var a = Number(x);    //숫자형 NaN

var b = Number(y);    //숫자형 NaN

//※ 문자열 맨앞에 문자로 시작하면 형변환을 해도 값을 인식하지 못한다.

var x = "999a9";    //문자열 999a9

var y = "99.9a9";    //문자열 99.9a9

var a = parseInt(x);    //숫자형 999

var b = parseInt(y);    //숫자형 99

var a = parseFloat(x);    //숫자형 999

var b = parseFloat(y);    //숫자형 99.9

var a = Number(x);    //숫자형 NaN

var b = Number(y);    //숫자형 NaN

 

 

 

//- 숫자형을 문자형으로 변환하기

var 변수 = String(숫자);    //숫자를 문자로 변환해줌

var 변수 = 숫자.toString(진법);    //숫자를 문자로 변환해줌 - 변환하면서 진법을 바꿀 수 있음

var 변수 = 숫자.toFixed(소수자리수);    //숫자를 문자로 변환해줌 - 실수형의 소수점 자리를 지정할 수 있음

var 변수 = 숫자 + "문자열";    //숫자와 문자열을 한 문자열로 더해줌

 

var x = 123;    //숫자형 123

var a = String(x);    //문자형 123

var a = x.toString();    //문자형 123

var a = x.toString(2);    //문자형 1111011(2진법)

var a = x.toString(16);    //문자형 7b(16진법)

var a = x.toFixed();    //문자형 123

var a = x.toFixed(1);    //문자형 123.0

 

var y = 99.999;    //숫자형 99.999

var a = x.toFixed();    //문자형 99

var a = x.toFixed(1);    //문자형 99.9

var a = x.toFixed(3);    //문자형 99.999

var a = x.toFixed(4);    //문자형 99.9990

 

//확률을 표현해줄 때 유용하다.
var z = 9;    //숫자형 9

var a = a + "ElNino Torres";    //문자형 9ElNino Torres

 

출처 : https://silvesteryan.tistory.com/9

반응형
반응형

 

<div data-foo="value">
</div>
list = document.querySelectorAll('[data-foo="value"]');
for(let i=0; i < list.length; i++){
	element = list[i]
}

 

반응형

+ Recent posts