Split a String using a point like Regex
I want to use the method split from the class String with the character "." bat, it doesn't rules... I have try using the character hexadecimal code '\u002E' bat doesn't works.
I need to divide a IP adress cutting for the points;
84.241.254.1 => 84 241 254 1
Thanks for all
It is more efficient to just parse it yourself.
But anyways you can use one of the following regexes.
Naturally with the second you will have to escape the backslash when you use it in a java string.
Similar Messages
-
Need Help in Splitting a String Using SQL QUERY
Hi,
I need help in splitting a string using a SQL Query:
String IS:
AFTER PAINT.ACOUSTICAL.1..9'' MEMBRAIN'I would like to seperate this string into multiple lines using the delimeter .(dot)
Sample Output should look like:
SNO STRING
1 AFTER PAINT
2 ACOUSTICAL
3 1
4
5 9" MEMBRAIN
{code}
FYI i am using Oracle 9.2There's this as well:
with x as ( --generating sample data:
select 'AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN' str from dual union all
select 'BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN' str from dual)
select str,
row_number() over (partition by str order by rownum) s_no,
cast(dbms_xmlgen.convert(t.column_value.extract('//text()').getstringval(),1) as varchar2(100)) res
from x,
table(xmlsequence(xmltype('<x><x>' || replace(str,'.','</x><x>') || '</x></x>').extract('//x/*'))) t;
STR S_NO RES
AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN 1 AFTER PAINT
AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN 2 ACOUSTICAL
AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN 3 1
AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN 4
AFTER PAINT.ACOUSTICAL.1..9" MEMBRAIN 5 9" MEMBRAIN
BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN 1 BEFORE PAINT
BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN 2 ELECTRIC
BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN 3 2
BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN 4
BEFORE PAINT.ELECTRIC.2..45 caliber MEMBRAIN 5 45 caliber MEMBRAIN
{code} -
Split a string using Match Pattern function
I am trying to split a response string from a climate chamber into different parts. The string goes something like this: 0030.0\s0034.6\s0080.0\s0083.4. I am using the match pattern function to split the string using \s as the search string. But it is not splitting the string as required. If I use only \ , its working fine. Can anyone please suggest why \s is not being recognised as a part of the input string?
Subhro.
Solved!
Go to Solution.Is the string you show in normal display mode or in \ codes display mode?
Anyway, if you need to match a '\' character you'll have to mask it using \, so the match string would be '\\s' to match '\s'.
Alternatively you could use spreadsheet string to array with the correct delimiter. For the data you show this would work perfectly. -
How to split a string using IndexOf?
How would you split a string using indexOf and not using the .split method?
Any help is appreciated :D
Message was edited by:
billiejoewould it be better to use the first or the second?
int indexOf(int ch)
Returns the index within this string of the first occurrence of the specified character.
int indexOf(int ch, int fromIndex)
Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
I think the second would be helpful. so how do i read it? -
How to split a string using sql
Hi All,
I've to write a query where I need to split a string, how this can be done? So let's say a column has value as 1,2,3,4,5 and I want to split this string and output it as:
1
2
3
4
5
Please advise.Lots of articles:
Snap this user defined function too:
CREATE FUNCTION [dbo].[ufn_SplitString_Separator](@InputStr VARCHAR(MAX), @Separator VARCHAR(1))
RETURNS @tmpTable TABLE (OutputStr VARCHAR(MAX))
AS BEGIN
DECLARE @TmpPOS integer
SET @TmpPOS = CHARINDEX(@Separator,@InputStr)
WHILE @TmpPos > 0 BEGIN
IF @TmpPos > 0 BEGIN
INSERT INTO @tmpTable VALUES (LTRIM(RTRIM(SUBSTRING(@InputStr,1,@TmpPos-1))))
SET @InputStr = SUBSTRING(@InputStr, @TmpPOS + 1, LEN(@InputStr) - @TmpPos)
SET @TmpPOS = CHARINDEX(@Separator,@InputStr)
END ELSE BEGIN
INSERT INTO @tmpTable VALUES (LTRIM(RTRIM(@InputStr)))
SET @TmpPos = 0
END
END
IF LEN(@InputStr) > 0 BEGIN
INSERT INTO @tmpTable VALUES (LTRIM(RTRIM(@InputStr)))
END
RETURN
END
GO
And you can use like this:
SELECT * FROM DBO.[ufn_SplitString_Separator]('1,2,3,4,5',',')
"If there's nothing wrong with me, maybe there's something wrong with the universe!" -
How to Split the string using Substr and instr using loop condition
Hi every body,
I have below requirement.
I need to split the string and append with single quotes('') followed by , (comma) and reassign entire values into another variable. so that i can use it where clause of update statement
for example I am reciveing value as follows
ALN varchar2(2000):=(12ERE-3MT-4Y,4IT-5O-SD,OP-K5-456,P04-SFS9-098,90P-SSF-334,3434-KJ4-O28,AS3-SFS0-J33,989-3KL-3434);
Note: In the above variable i see 8 transactions, where as in real scenario i donot how many transaction i may recive.
after modification i need above transactions should in below format
ALTR Varchar2(2000):=('12ERE-3MT-4Y','4IT-5O-SD','OP-K5-456','P04-SFS9-098','90P-SSF-334','3434-KJ4-O28','AS3-SFS0-J33','989-3KL-3434');
kindly help how to use substr and instr in normal loop or for loop or while loop while modifying the above transactions.
Please help me to sort out this issue.
Many Thanks.
Edited by: user627525 on Dec 15, 2011 11:49 AMTry this - may not be the best way but...:
create or replace type myTableType as table of varchar2(255)
declare
v_array mytabletype;
v_new_str varchar2(4000);
function str2tbl
(p_str in varchar2,
p_delim in varchar2 default '.')
return myTableType
as
l_str long default p_str || p_delim;
l_n number;
l_data myTableType := myTabletype();
begin
loop
l_n := instr( l_str, p_delim );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+length(p_delim) );
end loop;
return l_data;
end;
begin
v_array := str2tbl ('12ERE-3MT-4Y,4IT-5O-SD,OP-K5-456,P04-SFS9-098,90P-SSF-334,3434-KJ4-O28,AS3-SFS0-J33,989-3KL-3434', ',');
FOR i IN 1 .. v_array.COUNT LOOP
v_new_str := v_new_str || ''''||v_array(i)||'''' || ',';
END LOOP;
dbms_output.put_line(RTRIM(v_new_str, ','));
end;
OUTPUT:
=======
'12ERE-3MT-4Y','4IT-5O-SD','OP-K5-456','P04-SFS9-098','90P-SSF-334','3434-KJ4-O28','AS3-SFS0-J33','989-3KL-3434'HTH
Edited by: user130038 on Dec 15, 2011 12:11 PM -
I have a field that contains a comma separated string of sys_id’s that relate to another table.
I am trying to write a query that returns the name value from the reference table, so that the result is a comma separated string of the name field.
Can anyone help with the SQL required to split out the sys_id’s, do the look-up and return the names back into a string?
Table1
Number
Category
1001
Sys_id1, Sys_id3, Sys_id9
1002
Sys_id3
1003
Sys_id4,Sys_3
1004
Sys_id1, Sys_id9, Sys_id10, Sys_id6
Category Reference Table
Category Sys_id
Category_Name
Sys_id1
Consulting
Sys_id3
Negotiate
Sys_id4
Planning
Sys_id6
Building
Sys_id9
Receipt
Sys_id10
Complete
The result I am looking for would be.
Number
Category
1001
Consulting, Negotiate, Receipt
1002
Negotiate
1003
Planning, Negotiate
1004
Consulting, Receipt, Complete, BuildingI am not going to arguee regarding your model, but you should consider normalizing it.
The idea is to have a function to split the string and return a row for each element in the list. Dump the result into a table and then use FOR XML PATH to do the string aggregation.
To learn about different methods you could use to create the split function refer to this article.
Arrays and Lists in SQL Server
http://www.sommarskog.se/arrays-in-sql.html
Here is an example using XML methods. This is just an example and it doesn't deal with proper indexing, weird characters as part of the list that can't be translated as xml, etc.
SET NOCOUNT ON;
USE tempdb;
GO
DECLARE @T TABLE (
Number int,
Category varchar(50)
INSERT INTO @T (Number, Category)
VALUES
(1001, 'Sys_id1, Sys_id3, Sys_id9'),
(1002, 'Sys_id3'),
(1003, 'Sys_id4, Sys_id3'),
(1004, 'Sys_id1, Sys_id9, Sys_id10, Sys_id6');
DECLARE @R TABLE (
Sys_id varchar(15),
Category_Name varchar(35)
INSERT INTO @R (Sys_id, Category_Name)
VALUES
('Sys_id1', 'Consulting'),
('Sys_id3', 'Negotiate'),
('Sys_id4', 'Planning'),
('Sys_id6', 'Building'),
('Sys_id9', 'Receipt'),
('Sys_id10', ' Complete');
DECLARE @W TABLE (
Number int,
pos int,
Sys_id varchar(15),
PRIMARY KEY (Number, Sys_id)
INSERT INTO @W (Number, pos, Sys_id)
SELECT
A.Number,
ROW_NUMBER() OVER(PARTITION BY A.Number ORDER BY N.x) AS pos,
N.x.value('(text())[1]', 'varchar(15)') AS Sys_id
FROM
@T AS A
CROSS APPLY
(SELECT A.Category AS [text()] FOR XML PATH('')) AS B(c)
CROSS APPLY
(SELECT CAST('<l>' + REPLACE(B.c, ', ', '</l><l>') + '</l>' AS xml)) AS C(x)
CROSS APPLY
C.x.nodes('/l') AS N(x);
SELECT
A.Number,
STUFF(
SELECT
', ' + C.Category_Name
FROM
@W AS B
INNER JOIN
@R AS C
ON C.Sys_id = B.Sys_id
WHERE
B.Number = A.Number
ORDER BY
B.pos
FOR XML PATH(''), TYPE
).value('(text())[1]', 'varchar(MAX)'), 1, 2, '') AS Category
FROM
@T AS A;
GO
AMB
Some guidelines for posting questions... -
How to "split" a string using API 1.3?
Hi everyone,
I'm needing to split strings at the slash "/" character.
Unfortunately, we're using API 1.3, and according to the API, "split" isn't available until 1.4.
I'm looking for suggestions, help, examples, or alternatives.
Thanks!How about StringTokenizer?
-
How to split a string for 2 different matching patterns?
hey guys
i'm trying to split a string, using .split(regular expression), if two different pattern matches but i don't know the exact syntax for it. I want to split the string from letters and punctuations.
This is what i'm doing, obviously it's not working, i'm not too sure if syntax are correct.
String inputDigit [] = input.split("([a-zA-Z]) (\\p{Punct})");Please help me with this, thank you!Can you describe in more detail what you're trying to
accomplish?ok, basically if you have a string which consists of letters, digits and punctuations. All i'm trying to do or want to do is store all digist within that string into an array. Therefore, i'm using split method to split the string wherever you find a letter or a punctuation. But i don't know what is syntax for using two different patterns at the same time.
// For example if you have a string "Eeyore 61 2.986PoohPiglet007Kanga-23"
// i only want: 61 2 986 007 23. I know i can use substring // but that would be a slightly long process -
Extract the numbers in string using regex
Hi,
How to extract the numers in string using regex?.
Already i tried split up the string using [\\s]
For ex: "Uting Tatk and Window Panet 15"
it gives the ans 15.
if the string is
For ex: "Uting Tatk and Window Panet 15 New!"
i can't find the number.
so plz give me some idea to get the number frm String.
ThanksI am developing a java project to extract Table of
content in a particular
PDF.
i extracted all topics.
then i want 2 extract page number from dat extracted
TOC.
if the TOC ends with number then i can easily find
out the number
but in vain if the TOC ends with like this
"Uting Tatk and Window Panet 15 New!".
i could n't find the page number.What will you do if it says:
"15 ways to find topics 42 new" -
Hi,
Here's a little regex problem Jos e-mailed me the other day, to which I didn't find a satisfactory answer (I found one, but it's rather verbose). Chances are that there is no short (or simple) solution, but when this is the case with a certain problem, I usually know why there is no simple solution because of some limitation with the regex flavor I am using. However, I can't think of one with this problem.
Also note that this problem can be easily (and far more efficiently) solved by writing a custom method, but I happen to like regex and am curious to know if there's some solution to this I missed.
So, without further a due, here is the questions:
Split a String T into parts with a maximum size N without splitting T on a certain sub string S. In other words: try to split a String in as large as possible parts (equal or less than N) without splitting it on a certain sub string.
You can use only one split(...) call!
Lets say S = abc and N = 5 then here are a couple of examples:
T = xyabcdefgabc
T.split(...) = [xyabc, defg, abc]
T = xyzabcbbzzzabcabcbcacbyyy
T.split(...) = [xyz, abcbb, zzz, abc, abcbc, acbyy, y]
T = xyzzzzabcbabczabcabcabcacbyyy
T.split(...) = [xyzzz, zabcb, abcz, abc, abc, abcac, byyy]uncle_alice wrote:
Okay, I give up. I can see how to do this with find(), but not with split(). I hope you haven't been waiting for me all this time... :DTo be frank, yes I have. You, sabre and maybe Darryl (in a good mood ; )). Ah well, I am now convinced I didn't overlook some easy shortcut.
This is what I've cooked up:
class Main {
public static void main(String[] args) {
String[] tests = {"xyabcdefgabc", "xyzabcbbzzzabcabcbcacbyyy", "xyzzzzabcbabczabcabcabcacbyyy"};
String sub = "abc";
int max = 5;
String regex = String.format("(?<=\\G.{%d,%d})(?=%s)|(?<=\\G.{%d})", max-sub.length()+1, max-1, sub, max);
System.out.println("regex = "+regex+"\n");
for(String test: tests) {
System.out.println(test);
System.out.println(" -> "+Arrays.toString(test.split(regex))+"\n");
}B.t.w. uncle_alice, this *\G* (previous match) functionality, is this some Java thing or does it exist in other regex flavors as well? -
How To Color a Text string using Regex (java.util.regex)
Hello,
How can I color a text string using regex class in 1.4?Yes, did you notice it said something about incredibly vague functionality?
Let me break it down for you
> How can I color a text string
Strings do not have color... You can color a component (a label, a button), but you can't color a string
> using regex class in 1.4?
Using a regular expression? How would a regular exression color anything? Do you have embedded color codes? Are you searhing a string for some secret word?
What are you talking about? -
Existance of decimal point in String using UDF
hi,
How would i know the existance of decimal point in String using UDF in SAP XI message mapping?
Regards,
Sanghamitrapublic String calculate(String var1, Container container) throws StreamTransformationException
Boolean b=var1.contains(".");
if(b)
return "true";
else
return "false";
Also using standard function IndexOf you can achive this. -
The latest changes to the function to "Upload to FTP Host" has rendered this useless - no point using a program like Muse if I can not easily and automatically upload the work to the webserver! I use BlueHost webhosting that has a primary domain and I have several domains with that account (as sub-domains or folders on this server) - with past versions of Muse when uploading pages it simply opened an alert window to tell me (what I already know) that the website I was uploading does not point to the primary domain BUT NOW Muse tries to create a new separate folder in the root directory of the primary domain - completely ignoring the directory path I am giving it - useless! Why make these senseless changes to the program - and so often - very frustrating it is like amateur ware!.
Hi Stephen,
There are some issues with the upload to ftp via Muse, which the engineering team is aware of and those will be fixed in a future build of Muse. At this point the work around would be to export the html from Muse and then upload via some third party ftp client like filezilla.
I will recommend that you keep an eye on our release notes page to get more updates on it - Release notes | Adobe Muse CC
- Abhishek Maurya -
Which match gets used when you use OR ('|') to specify multiple possible matches in a regex, and there are multiple matches among the supplied patterns? The first one (in the order written) which matches? Or the one which matches the most characters?
To make this concrete, suppose that you want to split a String into lines, where the line delimiters are the same as the [line terminators used by Java regex|http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html#lt] :
A newline (line feed) character ('\n'),
A carriage-return character followed immediately by a newline character ("\r\n"),
A standalone carriage-return character ('\r'),
A next-line character ('\u0085'),
A line-separator character ('\u2028'), or
A paragraph-separator character ('\u2029)
This problem has [been considered before|http://forums.sun.com/thread.jspa?forumID=4&threadID=464846] .
If we ignore the idiotic microsoft two char \r\n sequence, then no problem; the Java code would be:
String[] lines = s.split("[\\n\\r\\u0085\\u2028\\u2029]");How do we add support for \r\n? If we try
String[] lines = s.split("[\\n\\r\\u0085\\u2028\\u2029]|\\r\\n");which pattern of the compound (OR) regex gets used if both match? The
[\\n\\r\\u0085\\u2028\\u2029]or the
\\r\\n?
For instance, if the above code is called when
s = "a\r\nb";and if the first pattern
[\\n\\r\\u0085\\u2028\\u2029]is used for the match when the \r is encountered, then the tokens will be
"a", "", "b"
because there is an empty String between the \r and following \n. On the other hand, if the rule is use the pattern which matches the most characters, then the
\\r\\n
pattern will match that entire \r\n and the tokens will be
"a", "b"
which is what you want.
On my particular box, using jdk 1.6.0_17, if I run this code
String s = "a\r\nb";
String[] lines = s.split("[\\n\\r\\u0085\\u2028\\u2029]|\\r\\n");
System.out.print(lines.length + " lines: ");
for (String line : lines) System.out.print(" \"" + line + "\"");
System.out.println();
if (true) return;the answer that I get is
3 lines: "a" "" "b"So it seems like the first listed pattern is used, if it matches.
Therefore, to get the desired behavior, it seems like I should use
"\\r\\n|[\\n\\r\\u0085\\u2028\\u2029]"instead as the pattern, since that will ensure that the 2 char sequence is first tried for matches. Indeed, if change the above code to use this pattern, it generates the desired output
2 lines: "a" "b"But what has me worried is that I cannot find any documentation concerning this "first pattern of an OR" rule. This means that maybe the Java regex engine could change in the future, which is worrisome.
The only bulletproof way that I know of to do line splitting is the complicated regex
"(?:(?<=\\r)\\n)" + "|" + "(?:\\r(?!\\n))" + "|" + "(?:\\r\\n)" + "|" + "\\u0085" + "|" + "\\u2028" + "|" + "\\u2029"Here, I use negative lookbehind and lookahead in the first two patterns to guarantee that they never match on the end or start of a \r\n, but only on isolated \n and \r chars. Thus, no matter which order the patterns above are applied by the regex engine, it will work correctly. I also used non-capturing groups
(?:X)
to avoid memory wastage (since I am only interested in grouping, and not capturing).
Is the above complicated regex the only reliable way to do line splitting?bbatman wrote:
Which match gets used when you use OR ('|') to specify multiple possible matches in a regex, and there are multiple matches among the supplied patterns? The first one (in the order written) which matches? Or the one which matches the most characters?
The longest match wins, normally. Except for alternation (or) as can be read from the innocent sentence
The Pattern engine performs traditional NFA-based matching with ordered alternation as occurs in Perl 5.
in the javadocs. More information can be found in Friedl's book, the relevant page of which google books shows at
[http://books.google.de/books?id=GX3w_18-JegC&pg=PA175&lpg=PA175&dq=regular+expression+%22ordered+alternation%22&source=bl&ots=PHqgNmlnM-&sig=OcDjANZKl0VpJY0igVxkQ3LXplg&hl=de&ei=Dcg7S43NIcSi_AbX-83EDQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CA0Q6AEwAA#v=onepage&q=&f=false|http://books.google.de/books?id=GX3w_18-JegC&pg=PA175&lpg=PA175&dq=regular+expression+%22ordered+alternation%22&source=bl&ots=PHqgNmlnM-&sig=OcDjANZKl0VpJY0igVxkQ3LXplg&hl=de&ei=Dcg7S43NIcSi_AbX-83EDQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CA0Q6AEwAA#v=onepage&q=&f=false]
If this link does not survive, search google for
regular expression "ordered alternation"
My first hit went right into Friedl's book.
Harald.
Maybe you are looking for
-
Problem in SHD0 about creation of Transaction Variant for VA02
Hi All, My goal is to create a Transaction Variant for VA02 Variant that doesn't display the "Object Status" button under the page "Status" in the Header of Sales Orders. To do so, I created a Transaction Variant in SHD0 (named ZTEST_VA02), the creat
-
Hi GURUS, I would like to enable free of charge item category for another order type. can anybody advice how the tem category assignment sequence should be? Thanks, RJ
-
Elements 12 trial to full version
I downloaded the 30 trial version of Adobe Elements 12. The trial has ended. I purchased the full version from a store. Do I need to uninstall the trial version in order to get the full version on my computer? Do I use the serial number on the box to
-
Debugging the variable Exit - EXIT_SAPLRRS0_001
Hi Guys Not sure how to debug the variable exit with setting break point. I need to check if my variable it correctly populated after written code in ZXRSRU01 . Any help will be awarded. Thanks in advance Kirk
-
Flash plug in, snow leopard and aol
I recently installed SL on my Macbook. Now every time I open AOL it automatically loads something called "flash player (safari internet plug in)". Why has this automatically started loading and do I now need this? Can I turn it off? Also the only